У меня есть viewpager
, содержащий 2 фрагмента. Каждый из этих фрагментов содержит recyclerview
с адаптером, который извлекает данные из той же базы данных SQLite. recyclerview
в первом фрагменте содержит данные из SQLite, где contract.COL_4 равно 1. recyclerview
во втором фрагменте содержит данные из SQLite, где contract.COL_4 равно 2. Когда пользователь проводит элемент из recyclerview
в первом фрагменте я хочу, чтобы элемент переместился на recyclerview
второго фрагмента (измените contract.COL_4 с 1 на 2) и наоборот.
private void setItemTouchCallBack() {
//day = 1 when user at fragment 1, day = 2 when user at fragment
if (day == 1) {
simpleItemTouchCallBack = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder viewHolder1) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
changeDay(viewHolder.getAdapterPosition());
}
};
} else {
simpleItemTouchCallBack = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder viewHolder1) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
changeDay(viewHolder.getAdapterPosition());
}
};
}
}
private void changeDay(int position){
int d;
if (day == 1) {
d = 2;
} else {
d = 1;
}
ContentValues cv = new ContentValues();
int id = list.get(position).getid();
cv.put(contract.COL_4, d);
resolver.update(ContentUris.withAppendedId(contract.PATH_TASKS_URI, id), cv, null, null);
//fillList requeries the data from contentprovider to arraylist that is fed to the adapter
fillList();
madapter.notifyDataSetChanged();
}
Пока что элемент исчезает из текущего фрагмента, но не выходит из соседнего фрагмента. Я предполагаю, что я должен уведомить DataSetChanged на адаптере утилита просмотра на соседнем фрагменте? но я не уверен, как получить экземпляр этого. Кроме того, это также может быть потому, что фрагмент предварительно загружен? Пожалуйста, помогите, я сейчас застрял на этом. Спасибо!