2016-07-08 46 views
2

我試圖在它加入了一些數據,但它沒有更新,當我通過其他活動切換回來適配器得到了本次更新後更新我的適配器我的代碼:更新recyclerView適配器無需滾動到頂部

void updateAdapter(){ 
    adapter.setData(getData()); 
    adapter.notifyDataSetChanged(); 
    Log.d("TAG"," DATA SIZE AFTER UPDATE : "+getData().size() +" items : "+adapter.getItemCount()); 

} 

我的適配器:

private void createAdapter(final RecyclerView recyclerView , final List<Information> data) { 
    List<Information> content = new ArrayList<>(); 

    Log.d("TAG","createAdapter Called"); 

    final int[] currentRowPosition = {0}; 
    content = data; 
    final List<Information> finalContent = content; 
    adapter = new ParallaxRecyclerAdapter<Information>(finalContent) { 

/// my onBindViewHolder 
     @Override 
     public void onBindViewHolderImpl(final RecyclerView.ViewHolder viewHolder, final ParallaxRecyclerAdapter<Information> adapter, final int i) { 


      currentRowPosition[0] = i; 

      if (i <= finalContent.size() -1){ 

       ((ViewHolder) viewHolder).linearLayout.setVisibility(View.GONE); 

      final Information current = finalContent.get(i); 

      ((ViewHolder) viewHolder).DESCRIPTION.setText(current.description); 

     }else { 

       // this is my loadMore button which stays at the last row of recyclerView 
       ((ViewHolder) viewHolder).setIsRecyclable(false); 
       ((ViewHolder) viewHolder).linearLayout.setVisibility(View.VISIBLE); 
       ((ViewHolder) viewHolder).itemView.getLayoutParams().height = 100; 


       ((ViewHolder) viewHolder).LOADMORE.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         fetchNext(); 
        } 
       }); 

      } 

     } 
//my on create View Holder 
     @Override 
     public RecyclerView.ViewHolder onCreateViewHolderImpl(ViewGroup viewGroup, final ParallaxRecyclerAdapter<Information> adapter, int i) { 

      return new ViewHolder(getActivity().getLayoutInflater().inflate(R.layout.custom_row, viewGroup, false)); 

     } 

     @Override 
     public int getItemCountImpl(ParallaxRecyclerAdapter<Information> adapter) { 
      return finalContent.size()+1; 
     } 
    }); 
// adding header to recyclerView 
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); 
    View header = getActivity().getLayoutInflater().inflate(R.layout.header, recyclerView, false); 

    headerImageView = (ImageView) header.findViewById(R.id.headerImageView); 
    //setting CoverImage 

    adapter.setParallaxHeader(header, recyclerView); 

    adapter.setData(content); 
    recyclerView.setAdapter(adapter); 

} 

任何想法,我怎麼能在我的RecyclerView添加具有實時更新用新的項目?任何指導將是我

+0

如何添加新數據?在單獨的活動?你也可以添加你的代碼來執行在同一活動中承載recyclerView – Marat

+0

yes的活動,'updateAdapter'是我添加新數據的地方@Marat –

+0

而不是刷新整個recylceView,你可以簡單地刷新一個單獨的項目,看看這個[如何更新/刷新特定在RecyclerView](http://stackoverflow.com/questions/32457406/how-to-update-refresh-specific-item-in-recyclerview)。 –

回答

1

如此有用Adapter.class

public void add(List<Information> informations){ 
try{ 
finalContent.addAll(informations); 
}catch(Exception e){ 
e.printstacktrace(); 
} 
notifyDataSetChanged(); 
} 
+0

這是什麼內容? @narendra ??以及如何使用'adapter.addItem(item,position)'? –

+0

從Activity調用這個函數來添加listview中的信息列表。 –

+0

此功能將添加數據在您的列表的最後 –

3

我假設,當你運行Activity(其中有RecyclerView)首次加載一切從adapter正常。

但是,當你切換到其他activities這將改變項目的adapter並回到你Activity具有RecyclerView在不能得到適當的更新信息adapter沒有更新。

這可能是因爲當您的活動在onResume()恢復時,您並未刷新適配器,如下所示。您可能必須根據需要進行其他更改您的onResume方法,

onResume(){ 
    if(adapter != null){ 
    adapter.notifyDataSetChanged(); 
    } 
} 

請檢查一個Activity

enter image description here

實例的生命週期: 這並不直接解決您的問題,而是幫助你理解你回到activity你應該刷新adapter

有一個NoteListActivity,並在它的ListView,你可以在它NoteEditActivity添加或編輯條目的適配器,只要你回來,你必須刷新adapter在你有你的listview

activity
0

以及我結束了與此:

int offset = adapter.getItemCount(); 
    for(int l=0; l<= 4 ; l++){ 

     Log.d("TAG","getData : "+getData().size()); 
     if ((offset - 2) + l < getData().size()){ 

      adapter.addItem(getData().get((offset - 2) + l) , adapter.getItemCount() - 2); 
      adapter.notifyDataSetChanged(); 

     } 
    } 

我需要的是adapter.addItem(item , position)adapter.notifyDataSetChanged();上面的例子中被加載5倍的圖像在時間

相關問題