18

sqliteにリンクされたカーソルを使用する必要があるため、プロジェクトでリストビューを置き換えるソリューションを今までグーグルで検索しませんでした。

次の古い方法: listview.setAdapter(cursorAdapter)この方法で、データベース内のデータを処理するカーソルを取得できます。

しかし、現在、recycleview.setAdapter(recycleview.adapter)BaseAdapter を拡張するアダプターを認識しません。

誰でも私に手を差し伸べることができますか?

4

2 に答える 2

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...
      }

}
于 2014-10-27T05:55:38.283 に答える