Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add a new item to recyclerview programmatically?

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??

like image 499
Shubham Kanodia Avatar asked Jan 08 '15 16:01

Shubham Kanodia


People also ask

What is the use of ViewHolder in RecyclerView Android?

A ViewHolder describes an item view and metadata about its place within the RecyclerView. RecyclerView. Adapter implementations should subclass ViewHolder and add fields for caching potentially expensive View.


2 Answers

First add your item to mItems and then use:

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

this method is better than using:

mAdapter.notifyDataSetChanged(); 

in performance.

like image 153
Mostafa Avatar answered Sep 27 '22 00:09

Mostafa


simply add to your data structure ( mItems ) , and then notify your adapter about dataset change

private void addItem(String item) {   mItems.add(item);   mAdapter.notifyDataSetChanged(); }  addItem("New Item"); 
like image 38
Abdelrahman Elkady Avatar answered Sep 23 '22 00:09

Abdelrahman Elkady