簡體   English   中英

分頁庫 - 一個具有多種視圖類型的回收站

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM