RecyclerView裏面有一些關於RecyclerView的話題,但是我看到其中大部分都不適合我的情況。我的情況是我有一個RecyclerView(垂直線性佈局管理)顯示CardView的列表,每個Cardview包含一個內部RecyclerView(水平線性佈局管理)。問題在於滾動時的性能,它根本不是光滑的。我注意到,如果我對Inner Recyclerview的setAdapter發表評論,scrooling會變得流暢,但是我會使CardView不會更新新列表。該代碼是類似於此:RecyclerView裏面的RecyclerView不順利
onBindViewHolder...{
holder.innerRecycler.setAdapter(new InnerAdapter((data));
// comment that line make the outer recyclerview smoothly but the CardView data not updated thanks to the view recycling.
}
我知道一個滾動視圖內滾動視圖是不是一個好主意,但我沒有看到任何其他的選擇。任何人在面對這種佈局之前?謝謝。
UPDATE(添加更多代碼)。
// init outer recyclerview
mOuterRecyclerView = (RecyclerView) findViewById(...);
mOuterRecyclerView.setLayoutManagement(new LinearLayoutManagement(this));
mOuterRecyclerView.setHasFixedSize(true);
mOuterRecyclerView.setAdapter(new OuterAdapter(dataList));
// The adapter class for the outer one
onBindViewHolder(...){
final dataItem = mItems.get(position);
holder.innerRecycler.setAdapter(new InnerAdapter(dataItem.getList()));
}
// the holder for the outer
class MyHolder extends ViewHolder{
RecyclerView innerRecycler;
public MyHolder(View view){
super(..);
innerRecycler = findViewById(...);
}
}
// the adapter for the inner
onBindViewHolder(...){
final dataItem = mItems.get(pos);
// async loading
holder.tvTitle.setText(dataItem.getTitle);
}
佈局非常簡單,所以我不在這裏發佈完整的代碼。 :)
是的,你是對的,這是一個非常糟糕的做法,它會降低性能並影響用戶體驗。我建議你將內部'RecyclerView'的內容移動到其他地方,可能是點擊或新窗口時的彈出窗口。 至於你的問題,我們不能在沒有看到你究竟做什麼的情況下調試它 – Droidman
@Droidman。這就是我所想的,但我想看看是否有人能夠以最佳性能歸檔這種佈局。 :)。感謝您的建議 – Paul
您需要發表更多代碼 – ligi