Я пытаюсь динамически установить видимость представления, которое находится в том же фрагменте, что и recyclerview, как невидимое, когда recyclerview становится пустым. Проблема в том, что я делаю удаление элемента из recyclerview внутри Адаптер, в то время как видимость должна быть установлена внутри фрагмента. Я также реализовал элементы recyclerview «смахиванием для удаления», но это было внутри фрагмента с rv и с представлениями, которые должны стать невидимыми, и он работает нормально.
Удаление из адаптера:
holder.shoppingCartDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int holderPosition = holder.getAdapterPosition();
removeItem(holderPosition, v.getContext());
MainActivity.shoppingCartDatabase.shoppingCartDao().delete(currentItem);
}
});
private void removeItem(int position, Context context) {
shoppingCartList.remove(position);
if (shoppingCartList.isEmpty()) {
Toast.makeText(context, "Nu mai exista niciun produs in cos", Toast.LENGTH_LONG).show();
// SET VISIBILITY
}
notifyItemRemoved(position);
}
Удаление из фрагмента - видимость изменяется после удаления последнего элемента:
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
MainActivity.shoppingCartDatabase.shoppingCartDao().delete(shoppingCartList.get(position));
shoppingCartList.remove(position);
shopAdapter.notifyDataSetChanged();
verifyIfRecyclerViewIsEmpty(shopAdapter, recyclerView);
}
}).attachToRecyclerView(recyclerView);
Где verifyIftheRecyclerViewIsEmpty (shopAdapter, recyclerView) - метод для видимость:
private void verifyIfRecyclerViewIsEmpty(RecyclerView.Adapter adapter, RecyclerView recyclerView) {
if (adapter.getItemCount() == 0) {
constraintLayout.setVisibility(View.GONE);
recyclerView.setVisibility(View.GONE);
textView.setVisibility(View.VISIBLE);
btnAdd.setVisibility(View.VISIBLE);
} else {
constraintLayout.setVisibility(View.VISIBLE);
recyclerView.setVisibility(View.VISIBLE);
textView.setVisibility(View.GONE);
btnAdd.setVisibility(View.GONE);
}
}