У меня проблема с обновлением правильного объекта ученика в моей базе данных из viewpager2.Мой viewpager2 имеет возможность отображать студентов в алфавитном порядке или по классам, студенты не отображаются в том же порядке, в котором они находятся в базе данных.
Я попытался получить идентификатор из @Override onBindViewHolder и присвоить результатам глобальное значение int в адаптере, но это число не соответствует идентификатору базы данных студента.
private int mDbId;
//Constructor
ViewPagerAdapter(Context context, List<StudentEntity data) {
this.mContext = context;
this.mInflater = LayoutInflater.from(context);
this.mData = data;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
StudentEntity student = mdata.get(position);
mDBId = student.getId();
mFirstName = student.getFirstName();
mLastName = student.getLastName();
mGrade = student.getGrade();
holder.inputFirstName.setText(mFirstName);
...
}
public class ViewHolder extends RecyclerView.ViewHolder {
private Button btnSave;
private TextInputEditText editFirstName;
...
ViewHolder(View itemView) {
super(itemView);
editFirst = itemView.findViewById(R.id.edit_text_first_name);
...
btnSave.setOnClickListener(view -> {
Intent saveIntent = new Intent();
// the mDbId is where I'm having issues.
saveIntent.putExtra("EXTRA_DB_id", mDbId;
saveIntent.putExtra("EXTRA_FIRST_NAME", editFirstName.getText().toString();
((Activity mContext).setResult(RESULT_OK, saveIntent);
// .finish() works as intented
((Activity mContext).finish();
}
}
}