91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何在RecyclerView實現多類型布局

小樊
161
2024-06-19 10:24:03
欄目: 編程語言

要在RecyclerView中實現多類型布局,可以通過以下步驟實現:

  1. 創建多個不同的ViewHolder類,每個ViewHolder對應不同類型的布局。
  2. 創建一個RecyclerView.Adapter類,并重寫getItemViewType()方法,根據position返回不同的布局類型。
  3. 在Adapter的onCreateViewHolder()方法中根據布局類型返回對應的ViewHolder。
  4. 在Adapter的onBindViewHolder()方法中根據position和布局類型綁定數據到對應的ViewHolder。

下面是一個簡單的示例代碼:

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private List<Item> itemList;

    public MyAdapter(List<Item> itemList) {
        this.itemList = itemList;
    }

    @Override
    public int getItemViewType(int position) {
        return itemList.get(position).getType();
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        switch (viewType) {
            case Item.TYPE_ONE:
                View viewOne = inflater.inflate(R.layout.item_one, parent, false);
                return new ViewHolderOne(viewOne);
            case Item.TYPE_TWO:
                View viewTwo = inflater.inflate(R.layout.item_two, parent, false);
                return new ViewHolderTwo(viewTwo);
        }
        return null;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        Item item = itemList.get(position);
        switch (item.getType()) {
            case Item.TYPE_ONE:
                ((ViewHolderOne) holder).bind(item);
                break;
            case Item.TYPE_TWO:
                ((ViewHolderTwo) holder).bind(item);
                break;
        }
    }

    @Override
    public int getItemCount() {
        return itemList.size();
    }

    public static class ViewHolderOne extends RecyclerView.ViewHolder {
        public ViewHolderOne(View itemView) {
            super(itemView);
        }

        public void bind(Item item) {
            // Bind data to ViewHolderOne
        }
    }

    public static class ViewHolderTwo extends RecyclerView.ViewHolder {
        public ViewHolderTwo(View itemView) {
            super(itemView);
        }

        public void bind(Item item) {
            // Bind data to ViewHolderTwo
        }
    }
}

在這個示例中,Item是一個自定義的數據類,包含了一個getType()方法用于返回布局類型。根據不同的類型,返回不同的ViewHolder來展示不同的布局。在ViewHolder中通過bind()方法綁定數據到布局中。

最后,在Activity或Fragment中實例化MyAdapter并設置給RecyclerView即可實現多類型布局。

0
普兰店市| 肥东县| 枝江市| 阿尔山市| 安西县| 乐昌市| 饶阳县| 华蓥市| 南康市| 武宣县| 额尔古纳市| 平南县| 靖远县| 象山县| 开封县| 孝昌县| 罗定市| 四会市| 常德市| 邵武市| 卫辉市| 呼玛县| 枝江市| 杭州市| 北辰区| 酒泉市| 铜鼓县| 绍兴市| 吴堡县| 萍乡市| 迁安市| 武山县| 全南县| 南华县| 丰县| 司法| 普陀区| 来宾市| 丘北县| 杭锦后旗| 许昌县|