簡體   English   中英

如何在 Android 中構建像 Play Store 這樣的自定義水平回收器視圖?

[英]How to build a custom horizontal recycler view like Play Store in Android?

Playstore 回收站視圖

我已經知道如何制作水平 RecyclerView,但我想制作一個自定義回收器視圖,在開始時有一個空白區域,當我們開始滾動時,背景圖像會變淡。

  • 只是讓你的適配器假裝擁有比實際更多的數據。 當它給你position <n (n:你想要在開始時清空的項目數)時,不要加載任何圖像並將其留空。 當它詢問getItemCount()中的數據大小時,返回your data size + n
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder>{
    ...
    private final int N  =2 ;
    @Override
    public PageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {...}
    @Override
    public void onBindViewHolder(@NonNull PageViewHolder holder, int position) {
         if(position <N)return ;
         else {
             // bind your holder with data
         }
    }

    @Override
    public int getItemCount() {
        return pageEntities.size() +N;
    }
}

  • 您還可以通過覆蓋方法getItemViewType和返回值來使用視圖類型值,該值指示您是否希望此視圖持有者為空或具有不同於常規視圖持有者的其他行為。
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder>{
    ...
    private final int N  =2 ;
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
         View v ;
         if(viewType ==0){
             v = LayoutInflater.from(context).inflate(R.layout.view_holder_item_1, parent, false);
         }else {
             v = LayoutInflater.from(context).inflate(R.layout.view_holder_item_2, parent, false);
         }
         return new new MyViewHolder(v.getRootView()) ;
}
    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
         if(position <N){
             // bind your holder view of type 1 with data you want
         }
         else {
             // bind your holder view of type 2 with data you want
         }
    }

    @Override
    public int getItemCount() {
        return pageEntities.size() +N;
    }
    @Override
    public int getItemViewType(int position) {
        return position <N ?0:1 ;
    }
}

在這種情況下,您的類型 1 將是空視圖持有者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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