以编程方式向回收视图添加新项?

我还在努力回收利用。 我有一个数组列表,用于初始化回收器视图。

如何在设置适配器和布局管理器后向回收器视图添加新项?

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()之后,我如何添加一个新的项目到回收视图?

164891 次浏览

只需添加到数据结构(mItems) ,然后通知适配器有关数据集更改

private void addItem(String item) {
mItems.add(item);
mAdapter.notifyDataSetChanged();
}


addItem("New Item");

首先将你的项目添加到 mItems,然后使用:

mAdapter.notifyItemInserted(mItems.size() - 1);

这种方法比使用:

mAdapter.notifyDataSetChanged();

在表演上。

如果要向列表中添加多个项,请使用以下命令:

mAdapter.notifyItemRangeInserted(startPosition, itemcount);

这会通知任何已注册的观察者,从 position Start 开始的当前反映的 itemCount 项已被新插入。以前位于 position Start 及其后的项目现在可以从 position positinStart + itemCount 开始找到

数据集中现有的项仍然被认为是最新的。