Android: BaseAdapter как?

Хорошо, я искал во всем, и у меня возникли некоторые проблемы с реализацией BaseAdapter.

Мне удалось реализовать простой адаптер курсора http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html, как в приведенном выше примере.

Здесь есть довольно хороший пример BaseAdapter: List14 пример Google

Я хочу создать свой собственный адаптер списка, используя BaseAdapter, чтобы показать listView с несколькими элементами из базы данных. Я знаю, что это можно сделать с помощью простого адаптера курсора, но я хочу обрабатывать строки по-разному, поэтому я хочу иметь возможность рисовать каждую строку, переопределяя getView. Данные будут извлечены из курсора.

Я знаю, что этот код уродлив для получения данных курсора, но при условии, что я заполнил курсор. Какие у вас есть предложения по этому поводу, если столбец 8 содержит идентификатор ресурса изображения. :

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    cursor.moveToPosition(position);
    ImageView i = new ImageView(mContext);
    i.setImageResource(cursor.getShort(8));
    i.setAdjustViewBounds(true);
    i.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

    return i;
}

Есть ли у вас хорошие примеры рисования BaseAdapter с помощью курсора?


person Chrispix    schedule 12.02.2009    source источник
comment
Не могли бы вы предоставить немного больше подробностей о том, чего вы пытаетесь достичь / что не работает, как вы ожидаете. Что делает код, который вы показали, когда вы его запускаете? Чем это отличается от того, что вы пытаетесь сделать?   -  person Reto Meier    schedule 12.02.2009
comment
На самом деле, после еще нескольких часов копания, я думаю, что каким-то образом это заработало. Моя самая большая проблема заключается в том, что если я удаляю элемент из строки, мой список не обновляется, даже с mAdapter.notifiyDataSetChanged();   -  person Chrispix    schedule 12.02.2009


Ответы (1)


Попробуйте вызвать notifyDataSetChanged() из метода внутри самого BaseAdapter.

См. методы в List8 из Демонстрации API в качестве примера.

person Matt    schedule 31.03.2011