[英]RecyclerView with multiple view types and paging library with boundary callback
[英]Paging library - one recycler with multiple view types
我在我的項目中使用所有Android架構組件(Room DB,Live Data等)。目前,我遇到的問題是我有RecyclerView,它應該使用來自Room DB的加載數據並使用Paging庫顯示它。 問題是有多個數據類代表新聞源中的項目並存儲在Room中,我需要在那個回收器中顯示它們。
有什么辦法可以輕松解決嗎? 我可以創建一些可供所有這些類使用的接口嗎?
您可以通過覆蓋RecyclerView.Adapter的getItemViewType()方法來提供多個View holder列表。
代碼片段
@Override
public int getItemViewType(int position) {
// Just as an example, return 0 or 2 depending on position
// Note that unlike in ListView adapters, types don't have to be contiguous
return position % 2 * 2;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case 0: return new ViewHolder0(...);
case 2: return new ViewHolder2(...);
...
}
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
switch (holder.getItemViewType()) {
case 0:
ViewHolder0 viewHolder0 = (ViewHolder0)holder;
...
break;
case 2:
ViewHolder2 viewHolder2 = (ViewHolder2)holder;
...
break;
}
}
有關更多詳細信息,請參閱此鏈接。
你可以創建和界面
public interface NeewsFeedItem
String getTitle();
int getType();
String data();
...
您的每個模型都implement NeewsFeedItem
,在您的適配器中,您可以決定要顯示的視圖類型以及如何顯示正確的NeewsFeedItem
。
您可以覆蓋getItemViewType以顯示不同NeewsFeed類型的不同表示。
您還可以查看FlexibleAdapter庫,它可以幫助您管理具有不同類型,頁眉,頁腳等的適配器。
我想將標題添加到recyclerView。 第一個位置不能有不同的項目類型,因為重新加載項目后的庫會導致recyclelerview一直向下滾動到列表的底部。
我創建了ViewHolder,它包含我的常規列表項和我的標題。 這樣我的常規項目在頭部0的位置,庫停止滾動到recyclerView的底部,因為第一項是分頁的項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.