2017-07-24 44 views
1

我有一個arraylistCastArrayList,其中數據以VolleyonResponse方法,並從那裏我想檢查的CastArrayList大小大於7加入,另一數組列表subCastArrayListCastArraylist從位置0複製到7並將其發送到RecyclerView,但在RecyclerView中未收到任何視圖。我想如果CastArrayList大小大於7 SubCastArrayList應該複製前7個元素,否則複製整個CastArrayList,然後發送SubCastArrayListadapter錯誤在發送的ArrayList在回收站視圖適配器中的Android

ArrayList<Cast> castArrayList; 
ArrayList<Cast> subCastArrayList; 
castArrayList = new ArrayList<>(); 
subCastArrayList = new ArrayList<>(); 

castDetailAdapter = new 
CastDetailAdapter(MovieView.this,castArrayList,subCastArrayList); 

RecyclerView.LayoutManager mLayoutManager = new 
StaggeredGridLayoutManager(1,StaggeredGridLayoutManager.HORIZONTAL); 

recycler_view.setLayoutManager(mLayoutManager); 
recycler_view.setItemAnimator(new DefaultItemAnimator()); 
recycler_view.setAdapter(castDetailAdapter); 

StringRequest stringRequest1 = new StringRequest(Request.Method.GET, url, 
    new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      int i; 
      for (i=0;i<movieDetailFull.getCredits().getCast().size();i++) { 
       Cast cast = new Cast(); 

       cast.setName(movieDetailFull.getCredits().getCast().get(i).getName()); 

       cast.setId(movieDetailFull.getCredits().getCast().get(i).getId()); 

       castArrayList.add(i,cast); 
       castDetailAdapter.notifyDataSetChanged(); 
      } 
     } 

     if (castArrayList.size() > 7) { 

      subCastArrayList = new ArrayList<Cast> 
      (castArrayList.subList(0,6)); 
      castDetailAdapter.notifyDataSetChanged(); 
     } 
     else { 
      subCastArrayList = new ArrayList<Cast>(castArrayList); 
      castDetailAdapter.notifyDataSetChanged(); 
     } 

回答

2

您可以通過創建新的ArrayList改變subCastArrayList名單的參考是說現在subCastArrayList和列表適配器是兩個不同的參照不同的列表

所以只需添加元素,它

subCastArrayList.clear(); 
// ^^^ clear the list instead of creating new one inside if or else 
if (castArrayList.size() > 7) 
{ 
    //subCastArrayList.addAll(castArrayList.subList(0,6)); 
    subCastArrayList.addAll(castArrayList.subList(0,7)); 
    // upper range is exclusive so use   ^
}else{ 
    subCastArrayList.addAll(castArrayList); 
} 
    castDetailAdapter.notifyDataSetChanged(); 
    // move notify outside , avoid redundant statements 
+0

它工作。謝謝 –

+0

我很高興我能幫忙,快樂的編碼 –

相關問題