到目前为止我还没有找到解决方案来替换我项目中的listview,因为我需要使用与sqlite链接的游标。
老方法如下:
以这种方式listview.setAdapter(cursorAdapter)
,我可以让光标处理数据库中的数据
但现在,recycleview.setAdapter(recycleview.adapter)
它无法识别扩展BaseAdapter的适配器
所以任何人都可以帮我一把?
答案 0 :(得分:31)
自己实施它实际上非常简单:
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...
}
}
答案 1 :(得分:7)
新的RecyclerView
适用于新的RecyclerView.Adapter
基类。
所以它不适用于CursorAdapter
。
目前,RecyclerView.Adapter
可用无默认实施。
可能正式发布,Google会添加它。