Я использую Курсор для извлечения данных из базы данных в 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. Буду благодарен за примеры