Вопрос:

Элемент дублируется в адаптере, когда мы удаляем или обновляем элемент из базы данных Firebase Realtime

android firebase firebase-realtime-database

22 просмотра

2 ответа

1 Репутация автора

Элементы в адаптере дублируются 2 или 3 раза, когда мы пытаемся удалить элемент из списка в базе данных реального времени Firebase.

Последний элемент в адаптере не удаляется после того, как мы выполняем удаление в базе данных Firebase в реальном времени.

Пробовал notifyDataSetChanged ().

override fun onItemClicked(
    adapterPosition: Int,
    mUserListProfile: ArrayList<UserProfile>
) {
     mShortlistedProfileVM?.deleteUserProfile(mUserListProfile.get(adapterPosition))
            mShortlistProfileAdapter.notifyDataSetChanged()
        }

}

Последний элемент в адаптере должен быть удален после того, как мы выполним удаление [операция в базе данных реального времени firebase. Дублированный элемент должен быть удален.

Автор: vijay kumar Источник Размещён: 11.08.2019 06:14

Ответы (2)


0 плюса

36 Репутация автора

1) Вы можете попробовать поменять, т.е.

public class TestApdater extends RecyclerView.Adapter<....> {    
...
private static List<Mobel> mData;
...    
public void swap(List list){
        if (mData != null) {
            mData.clear();
            mData.addAll(list);
        }
        else {
            mData = list;
        }
        notifyDataSetChanged();
}

2) Или, если это также не работает, вы можете просто добавить это по своему щелчку для кнопки удаления, обратите внимание, что это не лучшее решение, но работает.

    Intent i=new Intent(this, SameActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|FLAG_ACTIVITY_NEW_TASK|
FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
Автор: Aashutosh Poudel Размещён: 11.08.2019 07:18

0 плюса

1 Репутация автора

Это решение работает для меня:

Этот код удалит последний элемент в адаптере после выполнения операции удаления в базе данных реального времени firebase.

mAcceptedList.removeAt (adapterPosition); mShortlistProfileAdapter.notifyDataSetChanged ()

override fun onItemClicked(
    adapterPosition: Int,
    mUserListProfile: ArrayList<UserProfile>
) {
           mShortlistedProfileVM?.deleteUserProfile(mUserListProfile.get(adapterPosition))
            mAcceptedList.removeAt(adapterPosition);
            mShortlistProfileAdapter.notifyDataSetChanged()
        }
}
  1. Предотвратить предмет дублируется.

Очистите свой список перед добавлением данных в список.

mAcceptedList.clear()    <---add this line of code. 

val listSize = etrieveDataResponse.userViewedProfile!!.mViewedProfileList.size
 val mListUserProfile = retrieveDataResponse.mViewedProfileList
 for (i in 0..listSize - 1) {
  if (mListUserProfile.get(i).mProfileStatus == true) {
  mAcceptedList.add(mListUserProfile.get(i))
 }

} showDataOnAdapter (mAcceptedList)

Автор: vijay kumar Размещён: 11.08.2019 12:12
32x32