Languages

Menu
Sites
Language
About functions for item on genlist.

안녕하세요...

 

저는 현재 타이젠 2.3 을 이용하여 앱을 개발하고 있습니다.

container안에 genlist 를 선언하고 , genlist 의 item 으로 5개의 item 을 가진다고 할때( 총 5 item line)

만약 1번 item line 의 setting 값에 따라 2번 item line 이 show/hide 된다고 하면,

( 단, 3,4,5 는 항상 visible )

어떤 api 를 이용해야 하나요?

 

~저는 elm_genlist_clear() 는 모든 item을 clear 해버리는것으로 보여져서,

elm_genlist_item_class_free()를 사용했었습니다.

 

즉,,,,,elm_genlist_item_append(...) 를 이용하여 각각의 라인을 선언하고,

1 item에는 on&off 를 사용하는 check obj를 선언, 즉, Eina_Bool 을 통해

elm_genlist_item_class_free(& 2nd item class); 를 호출해보았으나 ,

check box 의 값에 따라  2번째 item 이 보였다가 사라졌다가 하질 않습니다.

 

도움 부탁드립니다.

감사합니다.

Edited by: Kim on 27 May, 2015

Responses

5 Replies
Jinsol Park

안녕하세요?

 

EAPI void elm_genlist_item_hide_set(const Elm_Object_Item *it, Eina_Bool hide);

위와같은 API가 있는데요,

숨기고자 하는 Elm_Object_Item를 얻어와서 해당 API로 hide 상태를 EINA_FALSE/TRUE로 지정하시면 원하시는 룩이 나올 것 같습니다.

 

이곳의 API ref에는 나와있지 않고 링크에 들어가시면 함수 원형을 보실 수 있습니다.

 

참고 부탁드립니다.

 

Kim

elm_genlist_item_hide_set(const Elm_Object_Item *it, Eina_Bool hide);

의 경우엔 첫번째 인자가  Elm_Object_Item 네요.

 

elm_genlist_item_append(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Genlist_Item_Type type, Evas_Smart_Cb func, const void *func_data);

 

제가 말한 것은 위 append 함수에서 두번째 인자인,

Elm_Genlist_Item_Class *itc 를 show/hide 시킬수 있는 함수였습니다.

아시다시피  , Elm_Genlist_Item_Class 에는 여러개의 object가 포함될수 있어서

그중 하나를 hide 시킬때는 말씀하시는 함수를 사용가능하나 ,,,,,

item line 전체를 hide는 불가할것 같아요.

Elm_Genlist_Item_Class 를 통째로 hide 시킬 방법은 없나요?

즉, ~elm_genlist_item_append() 함수와 반대되는 개념은 없나요?  추가만 있고 delete 나 hide를 찾을수가 없네요...

 

도움 부탁드려요.

감사합니다.

colin Rao

Hi,

There is another workaround, that's just remove/add the second item.

example:

call elm_genlist_nth_item_get(const Evas_Object *obj, unsigned int nth)/elm_genlist_first_item_get(const Evas_Object *obj) to get the specific item, 

then, elm_object_item_del(Elm_Object_Item *it) to delete the item, 

call elm_genlist_item_insert_after to add new item next to the specific itme.

Jinsol Park

elm_genlist_item_append류의 함수에 대한 반대되는 개념이 없다고 볼 수 있습니다.

Genlist의 내부 동작을 조금 알아야 하는데요,

 

쉽게말해 elm_genlist_item_append시에 인자로 들어가는 Elm_Genlist_Item_Class는 해당 아이템을 생성하기 위한 정보로 사용되고, 실제 아이템의 정보는 Elm_Object_Item의 리스트 형태로 가지고 있습니다.

 

즉 아이템이 append(혹은 prepand등)된 이후에는 내부적으로 Elm_Object_Item의 리스트 형태로 정보를 가지고 있게 되므로, Elm_Genlist_Item_Class는 별 의미가 없어지구요.

아이템이 추가된 이후 해당 아이템의 Elm_Object_Item 포인터를 얻어서 접근할 수 있는것 입니다.

(실제로 Genlist를 사용하는 예제를 보면 아이템이 추가된 이후 elm_genlist_item_class_free()를 통해 free를 하는것을 보실 수 있습니다.)

 

그래서 elm_genlist_item_hide_set()을 알려드린것이고, 아이템 자체를 지우려면 elm_object_item_del()를 통해 지울 수 있습니다.

 colin Rao님 설명처럼 Elm_Object_Item를 얻어오는 API를 사용해서 hide또는 delete후 재 append를 하시면 될 것 같습니다.

 

만약 item append 이후에 Elm_Genlist_Item_Class가 필요한 상황이라면 elm_genlist_item_item_class_get()을 통해 접근하는 방법이 있습니다.

 

더 궁금하신 부분 있으시면 다시 글 남겨주세요 ^^

Kim

말씀하신대로 하니깐, 잘 동작되네요...

감사합니당~~~~