不能为recyclerview的项设置不同的Drawables。
创始人
2024-12-27 08:00:26
0

在RecyclerView中,所有的项(Item)共享同一个布局(Layout),因此不能直接为RecyclerView的项设置不同的Drawables。不过,你可以使用RecyclerView的Adapter来实现不同项的不同Drawables。

以下是一个示例代码,演示如何使用RecyclerView的Adapter来为不同项设置不同的Drawables:

  1. 首先,创建一个自定义的RecyclerView的Adapter,并继承RecyclerView的Adapter类。在这个Adapter中,我们需要定义一个ViewHolder,用于存储每个项的视图。
public class MyAdapter extends RecyclerView.Adapter {

    private List itemList;

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public ImageView imageView;

        public ViewHolder(View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.item_image);
        }
    }

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

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        MyItem item = itemList.get(position);
        holder.imageView.setImageDrawable(item.getDrawable());
    }

    @Override
    public int getItemCount() {
        return itemList.size();
    }
}
  1. 接下来,创建一个自定义的数据模型类MyItem,用于存储每个项的数据和Drawable。
public class MyItem {
    private Drawable drawable;

    public MyItem(Drawable drawable) {
        this.drawable = drawable;
    }

    public Drawable getDrawable() {
        return drawable;
    }
}
  1. 最后,在你的Activity或Fragment中,创建一个RecyclerView并设置Adapter。
public class MainActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private MyAdapter mAdapter;
    private List itemList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 初始化数据
        itemList = new ArrayList<>();
        itemList.add(new MyItem(getResources().getDrawable(R.drawable.drawable1)));
        itemList.add(new MyItem(getResources().getDrawable(R.drawable.drawable2)));
        itemList.add(new MyItem(getResources().getDrawable(R.drawable.drawable3)));

        // 初始化RecyclerView和Adapter
        recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        mAdapter = new MyAdapter(itemList);
        recyclerView.setAdapter(mAdapter);
    }
}

在这个示例中,我们通过自定义的Adapter为每个项设置不同的Drawable。在Adapter的onBindViewHolder()方法中,我们根据项的位置从数据模型中获取Drawable,并设置给ViewHolder中的ImageView。

这样,你就可以为RecyclerView的项设置不同的Drawables了。

相关内容

热门资讯

透视免费!哈糖大菠萝软件下载,... 透视免费!哈糖大菠萝软件下载,大菠萝免费辅助器,玩家教你(有挂详情)1、构建自己的哈糖大菠萝软件下载...
透视智能ai!wejoker免... 透视智能ai!wejoker免费脚本,本然真的有挂(透视)2025新版(有挂详情)1、wejoker...
透视好友房!德州透视竞技联盟,... 透视好友房!德州透视竞技联盟,xpoker辅助助手,揭秘教程(有挂教程)德州透视竞技联盟辅助器中分为...
透视系统!aapoker真的假... 透视系统!aapoker真的假的,素来真的有挂(透视)切实教程(有挂细节);1、这是跨平台的aapo...
透视ai!佛手在线是不是有挂,... 透视ai!佛手在线是不是有挂,德州透视插件,2025新版技巧(有挂规律)1、在佛手在线是不是有挂ai...
透视脚本!德普之星透视辅助软件... 透视脚本!德普之星透视辅助软件下载,果然真的是有挂(透视)细节方法(有挂教程);1、完成德普之星透视...
透视辅助!来玩app 德州 辅... 透视辅助!来玩app 德州 辅助,拱趴大菠萝挂怎么安装,透明挂教程(有挂揭秘)1、任何拱趴大菠萝挂怎...
透视透视挂!wepoker作弊... 透视透视挂!wepoker作弊辅助,原来有挂(透视)2025新版(有挂工具);暗藏猫腻,小编详细说明...
透视挂透视!哈糖大菠萝万能挂,... 透视挂透视!哈糖大菠萝万能挂,pokermaster修改器,教你攻略(有挂脚本);1、构建自己的哈糖...
透视有挂!wepoker透视脚... 透视有挂!wepoker透视脚本,总是存在有挂(透视)可靠教程(有挂黑科技)在进入wepoker透视...