user3210476 user3210476 - 4 months ago 90
Android Question

Add a new item to recyclerview programatically?

I'm still trying to get my head around recyclerview.
I have an arraylist, that I use to initialize a recycler view with.

How can I add new items to the recycler view post setting an adapter and 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);
}
}


So basically after I
initdata()
and
initRecyclerView()
, how do i add a new item to the RecyclerView??

Answer

First add your item to mItems and then use:

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

than is better than using:

mAdapter.notifyDataSetChanged();

in performance.