Можно ли установить CursorAdapter в recycleview, как и ListView?
Я до сих пор не предлагал google решение для замены listview в моем проекте, потому что мне нужно использовать курсор, связанный с sqlite.
Старый способ:
listview.setAdapter(cursorAdapter)
таким образом, я могу получить курсор для обработки данных в базе данных
но теперь recycleview.setAdapter(recycleview.adapter)
он не распознает адаптер, расширяющий BaseAdapter
чтобы кто-нибудь мог дать мне руку?
Ответы
Ответ 1
Новый RecyclerView
работает с новым базовым классом RecyclerView.Adapter
.
Поэтому он не работает с CursorAdapter
.
В настоящее время существует стандартная реализация RecyclerView.Adapter
.
Может быть, с официальным выпуском, Google добавит его.
Ответ 2
Реализация этого на самом деле довольно проста:
public class CursorAdapter extends RecyclerView.Adapter<ViewHolder>{
Cursor dataCursor;
@Override
public int getItemCount() {
return (dataCursor == null) ? 0 : dataCursor.getCount();
}
public void changeCursor(Cursor cursor) {
Cursor old = swapCursor(cursor);
if (old != null) {
old.close();
}
}
public Cursor swapCursor(Cursor cursor) {
if (dataCursor == cursor) {
return null;
}
Cursor oldCursor = dataCursor;
this.dataCursor = cursor;
if (cursor != null) {
this.notifyDataSetChanged();
}
return oldCursor;
}
private Object getItem(int position) {
dataCursor.moveToPosition(position);
// Load data from dataCursor and return it...
}
}