Сложный пример ListView со сложными данными и сложной компоновкой каждой строки?

Я вытягиваю список объектов продукта из вызова базы данных, и я хочу создать ListView данных в своей деятельности с помощью прокрутки верхнего и нижнего колонтитула. Каждая строка будет состоять из миниатюры продукта, некоторых данных и кнопки, расположенных горизонтально. Я понимаю, что с помощью ListView я могу раздувать каждую строку, используя отдельный макет.

Большинство примеров, которые я видел с помощью ListView, просто показывают простой массив строк, которые заполняют весь вид деятельности, но большинство примеров в реальном мире будут более сложными, и я не могу найти хороших примеров, объясняющих, как все эти части подходят друг другу.

Есть ли у кого-нибудь какие-либо указатели на образец кода с хорошим объяснением?

3 ответа

Пример, который мне очень помог:

http://android-developers.blogspot.com/2009/02/android-layout-tricks-1.html

Я надеюсь, что это будет полезно и вам.


private static class CustomCursorAdapter extends CursorAdapter {
 protected ListView mListView;
 protected static class RowViewHolder {
 public TextView mTitle;
 public TextView mText;
 }
 public CustomCursorAdapter(Activity activity) {
 super();
 mListView = activity.getListView();
 }
 @Override
 public void bindView(View view, Context context, Cursor cursor) {
 // do what you need to do
 }
 @Override
 public View newView(Context context, Cursor cursor, ViewGroup parent) {
 View view = View.inflate(context, R.layout.row_layout, null);
 RowViewHolder holder = new RowViewHolder();
 holder.mTitle = (TextView) view.findViewById(R.id.Title);
 holder.mText = (TextView) view.findViewById(R.id.Text);
 holder.mTitle.setOnClickListener(mOnTitleClickListener);
 holder.mText.setOnClickListener(mOnTextClickListener);
 view.setTag(holder);
 return view;
 }
}


Самый простой способ иметь сложную строку в ListView - через SimpleAdapter. Для этого существует ряд примеров.

Чтобы заставить ListView заполнить оставшуюся часть экрана, задайте следующие свойства:

Используйте LinearLayout.

В представлении списка:

android:layout_height="fill_parent",
android:height="0dp",
android:layout_weight="1"

Во всех других виджетах:

android:layout_height="wrap_content"

Не устанавливайте высоту или layout_weight

licensed under cc by-sa 3.0 with attribution.