Я не могу перечислить данные из базы данных в RecyclerView - PullRequest
0 голосов
/ 10 марта 2020

Я использую Курсор для извлечения данных из базы данных в RecyclerView. Но ничего не выводится. С ListView все работает с SimpleCursorAdapter this . Но я хочу переключиться на RecyclerView, и SimpleCursorAdapter для него не подходит

MainActivity

public class MainActivity extends AppCompatActivity {

Toolbar toolbar;
FloatingActionButton fabMain;

RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
RecyclerAdapter recyclerAdapter;
Cursor cursor;
DataBase dataBase = new DataBase(this);
SQLiteDatabase sqLiteDatabase;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    recyclerView = findViewById(R.id.rv_main);
    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);
    toolbar = findViewById(R.id.toolbar_main);
    setSupportActionBar(toolbar);

    fabMain = findViewById(R.id.fab_main);
    fabMain.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent  = new Intent(MainActivity.this, AddActivity.class);
            startActivity(intent);

        }
    });

    sqLiteDatabase = dataBase.getWritableDatabase();
    cursor = sqLiteDatabase.query(DataBase.DATABASE_TABLE, null, null, null, null, null, null);
    recyclerAdapter = new RecyclerAdapter(MainActivity.this, cursor, sqLiteDatabase);
    recyclerView.setAdapter(recyclerAdapter);
}}

Адаптер

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
private Context context;
private LayoutInflater inflater;
private Cursor cursor;
private SQLiteDatabase sqLiteDatabase;

public RecyclerAdapter(Context context, Cursor cursor, SQLiteDatabase sqLiteDatabase) {
    this.context = context;
    this.cursor = cursor;
    this.sqLiteDatabase = sqLiteDatabase;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = inflater.inflate(R.layout.item_task, parent, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    sqLiteDatabase = new DataBase(context).getWritableDatabase();
    holder.tvTitle.setText(cursor.getColumnIndex(DataBase.KEY_TITLE));
    holder.tvText.setText(cursor.getColumnIndex(DataBase.KEY_TEXT));

}

@Override
public int getItemCount() {
    return cursor.getCount();
}


public class ViewHolder extends RecyclerView.ViewHolder {
    TextView tvTitle, tvText;
    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        tvTitle = itemView.findViewById(R.id.tv_title);
        tvText = itemView.findViewById(R.id.tv_text);
    }
}}

PS Я думаю, что проблема в адаптере , а точнее в onBindViewHolder. Буду благодарен за примеры

...