以编程方式向 recyclerview 添加新项目?
Add a new item to recyclerview programmatically?
我仍在努力了解 recyclerview。
我有一个数组列表,我用它来初始化回收器视图。
如何将新项目添加到回收站视图 post 设置适配器和布局管理器?
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),然后通知您的适配器有关数据集的更改
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);
这会通知所有已注册的观察者,当前反映的从 positionStart 开始的 itemCount 项已被新插入。以前位于 positionStart 及之后的项目现在可以从位置 positinStart+itemCount
开始找到
数据集中的现有项目仍被认为是最新的。
我仍在努力了解 recyclerview。 我有一个数组列表,我用它来初始化回收器视图。
如何将新项目添加到回收站视图 post 设置适配器和布局管理器?
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),然后通知您的适配器有关数据集的更改
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);
这会通知所有已注册的观察者,当前反映的从 positionStart 开始的 itemCount 项已被新插入。以前位于 positionStart 及之后的项目现在可以从位置 positinStart+itemCount
开始找到数据集中的现有项目仍被认为是最新的。