可以像在ListView中一样在回收视图中设置CursorAdapter吗?

时间:2014-10-11 07:38:00

标签: android android-recyclerview android-support-library

到目前为止我还没有找到解决方案来替换我项目中的listview,因为我需要使用与sqlite链接的游标。

老方法如下: 以这种方式listview.setAdapter(cursorAdapter),我可以让光标处理数据库中的数据

但现在,recycleview.setAdapter(recycleview.adapter)它无法识别扩展BaseAdapter的适配器

所以任何人都可以帮我一把?

2 个答案:

答案 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会添加它。