![](/img/trans.png)
[英]Recycler view: no adapter attached; skipping layout(Error in recycler view for API )
[英]Error in sending Arraylist to Adapter in Recycler view in Android
我有一個arraylist
CastArrayList
,其中數據被添加到Volley
的onResponse
方法中,從那里我想檢查CastArrayList
的大小是否大於7,另一個arraylist subCastArrayList
將CastArraylist
從位置0復制到7並將其發送到RecyclerView
但是沒有在RecyclerView
獲得任何視圖。 我想如果CastArrayList
大小大於7, SubCastArrayList
應該復制前7個元素,否則復制整個CastArrayList
,然后將SubCastArrayList
發送到adapter
。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.