2010-10-12 4 views
2

Что я пытаюсь сделать, так это показать некоторые данные для книги, такой как «Заголовок», «Автор» и «Обложка», и под этими данными иметь ListView, содержащий список кликабельных глав.Несколько типов ячеек в Android-списке ListView

Один из способов, который, как я думал, будет иметь ListView с различными типами ячеек, где первый будет содержать данные, а остальные из них будут простыми ячейками, содержащими главы. ListView привязывается к пользовательскому CursorAdapter, который реализует методы newView (...) и bindView (...), которые я не знаю, как настроить, чтобы возвращать различные типы ячеек на основе позиции ячейки.

@Override 
public void bindView(View view, Context context, Cursor cursor) { 

    TextView title = (TextView) view.findViewById(R.id.title); 
    title.setText(cursor.getString(cursor.getColumnIndex(Constants.TITLE))); 
    .. 
} 

@Override 
public View newView(Context context, Cursor cursor, ViewGroup parent) { 
    LayoutInflater inflater = LayoutInflater.from(context); 
    View v = inflater.inflate(R.layout.bookcell, parent, false); 
    bindView(v, context, cursor); 
    return v; 
} 

Как мне это сделать?

Спасибо!

ответ

5

Вы можете сделать это:

  1. Переопределение getViewTypeCount() и возвращая число различных расположений строк
  2. Перекрытие getItemViewType() и возвращает 0 на основе индекса макета строки, которые будут использоваться для данного position
  3. Регулировка newView() и bindView() использовать правильный тип строки на основе положения (например, newView() раздувает различные схемы строк на основе position)

Или вы можете попробовать собрать адаптер из кусочков, используя что-то вроде моего MergeAdapter.

+0

Как настроить newView и bindView? Они не получают аргумент позиции ... Не могли бы вы предоставить образец кода? Благодаря! – georgeb89

+0

@ georgeb89: Ваша позиция может быть найдена, вызвав 'getPosition()' на ваш 'Cursor'. – CommonsWare

+0

Хм .. Я пытался это сделать, но теперь я понимаю, что данные поступают из двух разных наборов данных (один для глав и один для остальных деталей книги), поэтому мне понадобится два разных курсора ...: S – georgeb89

Смежные вопросы