android - 在 recyclerview 中添加不同数量的参数
问题描述
我有这个 Recyclerview 并用 CardView 填充它。我想在每个 CardView 中添加不同数量的参数,我该怎么做?可能吗?如果我有相同数量的参数,它会起作用,但这不是我想要的。
编辑:我添加了以下 HelperClass 和 Adapter
例子
main.add(new HelperClass(R.drawable.image, "item1", "item2", "item3"));
main.add(new HelperClass(R.drawable.image2, "item1", "item2", "item3"));
我只想像这样在图像 2 中添加 2 个项目
main.add(new HelperClass(R.drawable.image2, "item1", "item2"));
我收到此错误
Expected 4 arguments but found 3
这是 HelperClass
public class HelperClass {
int image;
String item1, item2, item3;
public HelperClass (int image, String item1, String item2, String item3) {
this.image = image;
this.item1 = item1;
this.item2 = item2;
this.item3 = item3;
}
public int getImage() {
return image;
}
public String getItem1() {
return item1;
}
public String getItem2() {
return item2;
}
public String getItem3() {
return item3;
}
这是适配器
ArrayList<HelperClass> main;
Context context;
public MainAdapter(ArrayList<HelperClass> main, Context context) {
this.main = main;
this.context = context;
}
@NonNull
@Override
public MainViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.main_card_design,parent,false);
MainViewHolder mainViewHolder = new MainViewHolder(view);
return mainViewHolder;
}
@Override
public void onBindViewHolder(@NonNull MainViewHolder holder, int position) {
final HelperClass helperClass = main.get(position);
holder.image.setImageResource(helperClass.getImage());
holder.item1.setText(helperClass.getItem1());
holder.item2.setText(helperClass.getItem2());
holder.item3.setText(helperClass.getItem3());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, DetailsActivity.class);
intent.putExtra("image", helperClass.getImage());
intent.putExtra("item1", helperClass.getItem1());
intent.putExtra("item2", helperClass.getItem2());
intent.putExtra("item3", helperClass.getItem3());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return main.size();
}
public static class MainViewHolder extends RecyclerView.ViewHolder{
ImageView image;
TextView item1, item2, item3;
public MainViewHolder(@NonNull View itemView) {
super(itemView);
image = itemView.findViewById(R.id.image);
item1 = itemView.findViewById(R.id.item1);
item2 = itemView.findViewById(R.id.item2);
item3 = itemView.findViewById(R.id.item3);
}
}
解决方案
您可以让 Helper 类接受可变参数。请像这样更改构造函数。
public HelperClass(@DrawableRes int image, String... items) {
this.image = image;
if (items.length > 0) {
this.item1 = items[0]; // first item
}
if (items.length > 1) {
this.item2 = items[1]; // second item
}
if (items.length > 2) {
this.item3 = items[2]; // third item
}
}
推荐阅读
- python - 如何在 Python 中使用 json.loads 获取文本
- eiffel - 对象创建和函数结果的埃菲尔最短语句
- nlp - 使用 Tiger 语料库的德语动词词形还原
- html - 在悬停css上显示下拉菜单
- ios - 如何在 IOS 客户端自定义 Firebase 推送通知消息
- c++ - 如何在编译时“迭代”模板列表?
- node.js - 在 Node JS 中将函数的结果传递给 server.js
- laravel - laravel-5.7:数据未保存到数据库中,找不到对象
- android - 我想将互联网上的图像从主要活动显示到另一个活动?
- c# - Mongo c# ReplaceOne 和 FindOneAndReplace