错误在发送的ArrayList在回收站视图适配器中的Android

问题描述:

我有一个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(); 
     } 

您可以通过创建新的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

我很高兴我能帮忙,快乐的编码 –