Имеется RecyclerView
, в котором есть поля. Как организовать считывание данных и запись в БД?
public class TableMain extends Activity {
List<TableModel> tableModels = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_table_main);
createObjectTable();
RecyclerView recyclerView = findViewById(R.id.list);
DataAdapter dataAdapter = new DataAdapter(this, tableModels);
recyclerView.setAdapter(dataAdapter);
}
public void createObjectTable() {
tableModels.add(new TableModel("", "", ""));
tableModels.add(new TableModel("", "", ""));
}
}
class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private LayoutInflater inflater;
private List<TableModel> tableModels;
public DataAdapter(Context context, List<TableModel> tableModels) {
this.tableModels = tableModels;
this.inflater = LayoutInflater.from(context);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.activity_table_model, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return tableModels.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
EditText task, firstMark, secondMark;
public ViewHolder(View itemView) {
super(itemView);
task = itemView.findViewById(R.id.task_EditText);
firstMark = itemView.findViewById(R.id.first_mark_EditText);
secondMark = itemView.findViewById(R.id.second_mark_EditText);
}
}
}
public class TableModel {
private String task;
private String firstMark;
private String secondMark;
public TableModel(String task, String firstMark, String secondMark) {
this.task = task;
this.firstMark = firstMark;
this.secondMark = secondMark;
}
public String getTask() {
return task;
}
public void setTask(String task) {
this.task = task;
}
public String getFirstMark() {
return firstMark;
}
public void setFirstMark(String firstMark) {
this.firstMark = firstMark;
}
public String getSecondMark() {
return secondMark;
}
public void setSecondMark(String secondMark) {
this.secondMark = secondMark;
}
}
Эммм... это такой обширный вопрос. Принято это делать так:
1) Нужен ContentProvider
, над вашей БД - можно и без него, но это как бы не очень кошерно
2) Далее надо научиться асинхронно загружать из ContentProvider
'а Cursor
, делается это посредством CursorLoader
3) Когда у вас появится Cursor
уже можно применить RecyclerViewCursorAdapter - ну то есть адаптер, который автоматом будет на каждую запись БД отображать айтем в RecyclerView
4) Теперь в холдере у вас будет Cursor
, который будет указывать на текущую запись, соответственно можно будет его апдейтить прямо из ViewHolder
Как то так.
Можно пропустить шаги 1, 2 и сразу получить Cursor
из БД посредством SQLiteDatabase.query()
, будет не так красиво и немного подтормаживать, но вполне работоспособно.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хочу вывести греческую букву U (https://unicode-tablecom/en/01AF/) - получаю знаки вопроса
Из своего Android-приложения подключаюсь к севреру через обычный SocketНо сервер может работать также с шифрованием
Да я искал, много искал и долго)
Также попрошу проанализировать код и сказать что в нём можно было бы улучшитьСпасибо