2017-02-05 3 views
0

У меня есть FirebaseRecyclerAdapter. Я хочу нумерацию элементов. Так что, если у меня есть 5 пункт, какAndroid FirebaseRecyclerAdapter обновить все товары

1 - d 
2 - w 
3 - c 
4 - s 
5 - z 

, когда я добавить новый элемент в первую очередь, чем: (мне нужно это сделать)

1 - g 
2 - d 
3 - w 
4 - c 
5 - s 
6 - z 

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

// Set up Layout Manager, reverse layout 
     mManager = new LinearLayoutManager(getActivity()); 
     mManager.setReverseLayout(true); 
     mManager.setStackFromEnd(true); 
     mRecycler.setLayoutManager(mManager); 

     // Set up FirebaseRecyclerAdapter with the Query 
     Query postsQuery = getQuery(mDatabase); 
     mAdapter = new FirebaseRecyclerAdapter<Test, PostViewHolder>(Test.class, R.layout.item_record, PostViewHolder.class, postsQuery) { 
      @Override 
      protected void populateViewHolder(final PostViewHolder viewHolder, final Test model, final int position) { 
       viewHolder.bindToPost(model); 
      } 

     }; 
     mRecycler.setAdapter(mAdapter); 

.

public class PostViewHolder extends RecyclerView.ViewHolder { 

    public TextView titleView; 

    public PostViewHolder(View itemView) { 
     super(itemView); 
     titleView = (TextView) itemView.findViewById(R.id.tview); 
    } 

    public void bindToPost(Test item) { 
     titleView.setText(String.valueOf(getLayoutPosition())+". "+item.name); 
    } 
} 

Когда прибывает новый пункт, чем populateViewHolder запускается 1 раз. Но старые предметы не освежаются. Как я могу обновить все?

getLayoutPosition() это сделать:

5 - g 
4 - d 
3 - w 
2 - c 
1 - s 
0 - z 

Как я могу обновить все деталь, когда один новый создан?

ответ

0

Вы не показывая свой запрос. Он должен иметь порядок сортировки, определяемый так, чтобы при поступлении или изменении новых элементов Запрос мог автоматически отражать эти изменения.

Поскольку вы хотите отсортировать какой-либо индекс позиции, вам также нужно будет добавить поле position к вашим данным, чтобы запрос мог order using that child key.

Суть в том, что: если Query определяет порядок, а упорядочение детей изменяется со временем, FirebaseRecyclerAdapter автоматически отразит эти изменения. Вам просто нужно убедиться, что данные верны в базе данных.

Если вы не можете создать запрос, который правильно заказывает данные, вероятно, вы не должны использовать FirebaseRecyclerAdapter и вместо этого читать данные с помощью прослушивателя, а затем вручную сортировать данные в своем коде, а затем отправлять их на пользовательский адаптер для отображения в RecyclerView.

1

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

mAdapter.notifyDataSetChanged(); 
Смежные вопросы