Подтвердить что ты не робот

Можно ли установить CursorAdapter в recycleview, как и ListView?

Я до сих пор не предлагал google решение для замены listview в моем проекте, потому что мне нужно использовать курсор, связанный с sqlite.

Старый способ: listview.setAdapter(cursorAdapter) таким образом, я могу получить курсор для обработки данных в базе данных

но теперь recycleview.setAdapter(recycleview.adapter) он не распознает адаптер, расширяющий BaseAdapter

чтобы кто-нибудь мог дать мне руку?

4b9b3361

Ответ 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...
      }

}