我的适配器android studio中的两个数组列表

时间:2018-11-24 02:58:11

标签: android firebase

在一个视窗中我有两个不同的数组列表,这是我的代码

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)

1 个答案:

答案 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.对不起,我的英语能力。