2011-01-03 1 views
0

У меня есть расширяемый вид списка. Он состоит из 4 разделов. В первых двух разделах я хочу отобразить текст. В третьем я хочу отобразить изображение, а в четвертом я хочу отобразить видео. Короче говоря, каждый родитель имеет другого ребенка. Как реализовать это в расширяемом списке в android?Как добавить разных детей в каждый раздел расширяемого списка в Android?

Спасибо, Неху

ответ

1

Вы должны использовать ExpandableListAdapter, где вы возвращаетесь различные типы представлений в зависимости от того, что группа элемент находится в.

Таким образом, в списке адаптера перекрытии

getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) 

и делать что-то в зависимости от группыположение, например

getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
if (groupPosition == 0) return text views for this child 
if (groupPositon == 1) return image views for this child 
} 

Это должно начаться. Оттуда это довольно легко.

+0

Благодаря monkjack :) Я постараюсь это и будет пусть знают. – Neha

+0

Эй, monkjack, я пробовал делать так, как сказал, но каждый ребенок показывает мне как текстовое представление, так и изображения, в то время как в состоянии, которое я ставлю, я хочу отображать текст только в первом и втором разделе и изображении в оставшихся двух. Могу ли вы помочь мне? Plz скажите мне, где я иду не так. Я не могу опубликовать свой полный исходный код из-за меньшего пространства, поэтому я отправляю другой вопрос, где я буду размещать исходный код. Будете ли вы смотреть на него и пытаться сказать, что происходит не так? – Neha

+0

сделал и решил проблему .. Кажется, это просто «не идеальная» логика if-else .. напишите о решении ур или согласитесь с данным ответом .. 10q – Ewoks

0

Если вы расширяете CursorTreeAdapter, чтобы сделать свой ExpandableListAdapter, вам следует управлять созданием различных типов представлений в newChildView() и привязывать их в bindChildView(). Вы можете использовать данные в курсоре, чтобы различать разные случаи.

Пример кода

@Override 
    protected View newChildView(
     Context context, 
     Cursor cursor, 
     boolean isLastChild, 
     ViewGroup parent) 
    { 
     LayoutInflater mInflater = LayoutInflater.from(context); 
     String firstColumnName = cursor.getColumnName(0); 
     if(firstColumnName.equals("_id")) { 
      return mInflater.inflate(R.layout.main_list_item, parent, false);     
     } else if(firstColumnName.equals("name")){ 
      return mInflater.inflate(R.layout.search_list_item, parent, false);     
     } else { 
      throw new IllegalArgumentException("Unknown firstColumnName:" 
       + firstColumnName); 
     } 
    } 

    @Override 
    protected void bindChildView(
     View view, 
     Context context, 
     Cursor cursor, 
     boolean isLastChild) 
    { 
     String firstColumnName = cursor.getColumnName(0); 
     if(firstColumnName.equals("_id")) { 
      bindMainView(view, context, cursor, isLastChild); 
     } else if(firstColumnName.equals("name")){ 
      bindSearchView(view, context, cursor, isLastChild); 
     } else { 
      throw new IllegalArgumentException("Unknown firstColumnName:" 
       + firstColumnName); 
     } 
    }