错误在发送的ArrayList在回收站视图适配器中的Android
问题描述:
我有一个arraylist
CastArrayList
,其中数据以Volley
的onResponse
方法,并从那里我想检查的CastArrayList
大小大于7加入,另一数组列表subCastArrayList
将CastArraylist
从位置0复制到7并将其发送到RecyclerView
,但在RecyclerView
中未收到任何视图。我想如果CastArrayList
大小大于7 SubCastArrayList
应该复制前7个元素,否则复制整个CastArrayList
,然后发送SubCastArrayList
到adapter
。错误在发送的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
它工作。谢谢 –
我很高兴我能帮忙,快乐的编码 –