首页 > 解决方案 > 在 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);
    }
}

标签: android

解决方案


您可以让 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
  }
}

推荐阅读