Ответ 1
Сначала добавьте свой элемент в mItems
, а затем используйте:
mAdapter.notifyItemInserted(mItems.size() - 1);
чем лучше, чем при использовании:
mAdapter.notifyDataSetChanged();
в производительности.
Я все еще пытаюсь найти себе отражение в recyclerview. У меня есть arraylist, который я использую для инициализации представления recycler с.
Как добавить новые элементы в сообщение просмотра ресайклера, задав адаптер и макетщик?
private void initData() {
mItems = new ArrayList<String>();
for (int i = 0; i < ITEMS_COUNT; i++) {
mItems.add("Item " + (i + 1));
}
}
private void initRecyclerView() {
mRecentRecyclerView = (RecyclerView) findViewById(R.id.recentrecyclerView);
mRecentRecyclerView.setHasFixedSize(true);
mRecentLayoutManager = new LinearLayoutManager(this);
mRecentRecyclerView.setLayoutManager(mRecentLayoutManager);
mAdapter = new RecyclerView.Adapter<CustomViewHolder>() {
@Override
public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.notice_snippet
, viewGroup, false);
return new CustomViewHolder(view);
}
@Override
public void onBindViewHolder(CustomViewHolder viewHolder, int i) {
viewHolder.noticeSubject.setText(mItems.get(i));
}
@Override
public int getItemCount() {
return mItems.size();
}
};
mRecentRecyclerView.setAdapter(mAdapter);
private class CustomViewHolder extends RecyclerView.ViewHolder {
private TextView noticeSubject;
public CustomViewHolder(View itemView) {
super(itemView);
noticeSubject = (TextView) itemView.findViewById(R.id.notice_subject);
}
}
Итак, в основном после я initdata()
и initRecyclerView()
, как добавить новый элемент в RecyclerView?
Сначала добавьте свой элемент в mItems
, а затем используйте:
mAdapter.notifyItemInserted(mItems.size() - 1);
чем лучше, чем при использовании:
mAdapter.notifyDataSetChanged();
в производительности.
просто добавьте в свою структуру данных (mItems), а затем сообщите адаптеру об изменении набора данных
private void addItem(String item) {
mItems.add(item);
mAdapter.notifyDataSetChanged();
}
addItem("New Item");
Если вы добавляете несколько элементов в список, используйте это:
mAdapter.notifyItemRangeInserted(startPosition, itemcount);
Это уведомит всех зарегистрированных наблюдателей о том, что недавно включенные элементы itemCount, начинающиеся с positionStart, были вновь вставлены. Элемент, ранее расположенный в позиции Start и далее, теперь можно найти, начиная с позиции positinStart + itemCount
существующий элемент в наборе данных, который по-прежнему считается актуальным.
Посмотрите на этот учебник Использование RecyclerView его очень хорошее место, чтобы начать изучать recyclerview и все его возможности.
this.runOnUiThread(new Runnable() {
public void run() {
mAdapter.notifyDataChanged()
}
});