在一个视窗中我有两个不同的数组列表,这是我的代码
public class ProfileAdapter extends RecyclerView.Adapter<ProfileAdapter.ViewHolder> {
private Context context;
private List<Model>mCats;
private List<Model>mDogs;
public ProfileAdapter(Context context, List<Model> mCats,List <Model>mDogs) {
this.context = context;
this.mCats = mCats;
this.mDogs = mDogs;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.fotos_pet_profile, parent,false);
return new ProfileAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
final Model model = mDogs.get(position);
Glide.with(context.getApplicationContext()).load(model.getPetpicture()).into(holder.pet_image);
holder.pet_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, PostDetails.class);
intent.putExtra("userid", model.getUserid());
intent.putExtra("postid", model.getPostid());
intent.putExtra("belong", model.getBelong());
context.startActivity(intent);
}
});
final Model model2 = mCats.get(position);
Glide.with(context.getApplicationContext()).load(model.getPetpicture()).into(holder.pet_image);
holder.pet_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, PostDetails.class);
intent.putExtra("userid", model2.getUserid());
intent.putExtra("postid", model2.getPostid());
intent.putExtra("belong", model2.getBelong());
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return mDogs.size() + mCats.size();
}
public class ViewHolder extends RecyclerView.ViewHolder
{
public ImageView pet_image;
public ViewHolder (@NonNull View itemView)
{
super(itemView);
pet_image = itemView.findViewById(R.id.pet_image);
}
}
}
这是我的声明,运行程序时出现错误
java.lang.IndexOutOfBoundsException:索引:1,大小:1
在java.util.ArrayList.get(ArrayList.java:437)
答案 0 :(得分:0)
据我所知,在您的onBindViewHolder中会导致java.lang.IndexOutOfBoundsException,因为cat和dog都使用相同的位置,因此,如果cat和dog模型的大小不相等,则会导致异常。另一个问题是您的getItemCount,您的代码可以保证会引起异常,因为即使两个模型的大小相同,getItemCount的大小也总是大于cat或dog模型的大小。例如,如果您的猫和狗的大小相同,为3(您可以从0到2),则getItemCount将返回6,因此,如果位置为3,则将导致java.lang.IndexOutOfBoundsException。
P。 S.对不起,我的英语能力。