Как обновить элементы с помощью адаптера списка в ChildEventListenerAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Как обновить элементы с помощью адаптера списка в ChildEventListener

Сообщение Гость »


Я работаю над проектом. И я пытаюсь показать список объектов, данные в которых извлекаются из базы данных Firebase Realtime. Когда я меняю данные на консоли Firebase/вношу некоторые изменения в базу данных, эти изменения отражаются при повторном создании активности, а не в реальном времени.

//инициализируем данные база данных = FirebaseDatabase.getInstance() Список категорий = СписокСписков() //настраиваем адаптер и представление переработчика val rvCategory: RecyclerView =binding.rvCategory val CategoryAdapter = CategoryAdapter() rvCategory.layoutManager = LinearLayoutManager(this@CategoryListActivity) rvCategory.adapter = Адаптер категории val dataReference = data.getReference("категория") dataReference.addChildEventListener(объект: ChildEventListener { переопределить fun onChildAdded(snapshot: DataSnapshot, previousChildName: String?) { //добавляем данные в список val data = snapshot.getValue(Категория::class.java) CategoryList.add(данные!!) //отправляет данные в представление переработчика категорияAdapter.submitList(список категорий) } переопределить fun onChildChanged(snapshot: DataSnapshot, previousChildName: String?) { //добавляем данные в список val data = snapshot.getValue(Категория::class.java) CategoryList.add(данные!!) //отправляет данные в представление переработчика категорияAdapter.submitList(список категорий) } переопределить удовольствие onChildRemoved(снимок: DataSnapshot) { //добавляем данные в список val data = snapshot.getValue(Категория::class.java) CategoryList.add(данные!!) //отправляет данные в представление переработчика категорияAdapter.submitList(список категорий) } переопределить fun onChildMoved(snapshot: DataSnapshot, previousChildName: String?) { //добавляем данные в список val data = snapshot.getValue(Категория::class.java) CategoryList.add(данные!!) //отправляет данные в представление переработчика категорияAdapter.submitList(список категорий) } переопределить удовольствие onCancelled (ошибка: DatabaseError) { Toast.makeText(this@CategoryListActivity, error.message,Toast.LENGTH_SHORT).show() } }) Адаптер для списка категорий

class CategoryAdapter: ListAdapter(DiffCallBack) { переопределить удовольствие onCreateViewHolder( родитель: ViewGroup, Тип просмотра: Int ): КатегорияViewHolder { вернуть CategoryViewHolder( LayoutInflater.from(parent.context).inflate(R.layout.item_category_list,parent,false ) ) } переопределить удовольствие onBindViewHolder(держатель: CategoryViewHolder, позиция: Int) { Holder.bind(getItem(позиция)) Holder.itemView.setOnClickListener { val намерение = намерение (holder.itemView.context,CategoryDoctorListActivity::class.java) val Bundle = Bundle() Bundle.putString("ИмяКатегории",getItem(позиция).cName) намерение.putExtras(пакет) startActivity(holder.itemView.context,намерение,пакет) } } класс CategoryViewHolder(представление: Представление): RecyclerView.ViewHolder(представление){ имя категории частного значения: TextView = view.findViewById(R.id.category_name) частная категория val CategoryImage: ImageView = view.findViewById(R.id.category_image) забавная привязка (categoryData: Категория) { ИмяКатегории.текст = КатегорияДанные.cИмя Glide.with(itemView.context).load(categoryData.cPhoto).into(categoryImage) } } сопутствующий объект { частный val DiffCallBack = объект: DiffUtil.ItemCallback(){ переопределить fun areItemsTheSame(oldItem: Category, newItem: Category): Boolean { вернуть oldItem.cId == newItem.cId } переопределить fun areContentsTheSame(oldItem: Category, newItem: Category): Boolean { вернуть areItemsTheSame(oldItem,newItem) } } } } Я использовал адаптер списка, в котором нам предоставляется список отправки функции, ссылка: проверьте документацию для функции

Проверено некоторые журналы: OnChildChanged вызывается, когда в наборе данных происходит изменение, но это не отражается в списке с использованием представления переработчика


Изображение


Предложить изменения
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»