以编程方式向recyclerview添加一个新项目?
我仍然试图让我的头围绕recyclerview。 我有一个arraylist,我用它来初始化一个回收站视图。以编程方式向recyclerview添加一个新项目?
如何将新项目添加到回收站视图后期设置适配器和layoutmanager?
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();
表现中。
很好的答案。这也意味着它不会破坏动画 –
这应该被接受为正确的答案,另外一个动画破坏并且效率比这个低。 – Massimo
我是回答接受的答案的人,我认为这应该是可接受的答案:D –
只需添加到您的数据结构(mItems),然后通知适配器有关数据集变化
private void addItem(String item) {
mItems.add(item);
mAdapter.notifyDataSetChanged();
}
addItem("New Item");
如果它不是我想添加的字符串,但ViewGroup? –
@IgorGanapolsky我也有同样的疑问。你有没有找到解决方案? –
同样也有疑问!任何帮助? –
如果添加多个项目到列表中使用这样的:
mAdapter.notifyItemRangeInserted(startPosition, itemcount);
此通知所有已注册的观察人士开始positionStart目前反映ITEMCOUNT项目已被新插入。先前位于startStart及以后的项目现在可以从positinStart + itemCount
开始位于数据集中仍然被视为最新的现有项目。
this.runOnUiThread(new Runnable() {
public void run() {
mAdapter.notifyDataChanged()
}
});
你可以看到[在Github上这个示例](https://github.com/CabezasGonzalezJavier/FullRecycleView/tree/master/app/src/main/java/com/thedeveloperworldisyours/fullrecycleview/垂直)愉快的代码! – Cabezas