【问题标题】:two array list in my adapter android studio我的适配器 android studio 中的两个数组列表
【发布时间】:2018-11-24 02:58:11
【问题描述】:

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

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)

【问题讨论】:

  • 上面代码的第437行是哪一行?

标签: android firebase


【解决方案1】:

据我所知,在您的 onBindViewHolder 中可能会导致 java.lang.IndexOutOfBoundsException,因为 cat 和 dog 使用相同的位置,因此如果 cat 和 dog 模型的大小不相等,则可能会导致异常。另一个问题是您的 getItemCount,您的代码可以保证它会导致异常,因为 getItemCount 的大小总是高于猫或狗模型的大小,即使两个模型的大小相同。例如,如果你的猫和狗的大小相同,为 3(你可以得到 0 到 2),你的 getItemCount 将返回 6,所以当 position 为 3 时会导致 java.lang.IndexOutOfBoundsException。

P。 S. 对不起我的英语水平。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多