为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Adapter 获取 itemList.size() 或 itemList

如何从 Adapter 获取 itemList.size() 或 itemList

动漫人物 2023-07-28 10:22:53
从代码片段中,我记录了一些调试点,发现mImages.size()在不同的地方给出了不同的输出。无论 的值如何mImages.seize(),它总是返回0... public ArrayList<Uri> getImageUris()...对为什么...有任何帮助吗?public class ImagesAdapter extends RecyclerView.Adapter<ImagesAdapter.ImageViewHolder> {    private ArrayList<Image> mImages;    private ArrayList<Uri> mImagesUri = new ArrayList<>();    private Image mimage;    private Uri uris;    private static final String TAG = "ImagesAdapter";    public ImagesAdapter(ArrayList<Image> images) {        mImages = images;        if (mImages == null)            Log.d(TAG, "ImagesAdapter mImages = null");    }    @Override    public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        return new ImageViewHolder(LayoutInflater.from(parent.getContext())                .inflate(R.layout.list_pic_update, parent, false));    }    @Override    public void onBindViewHolder(ImageViewHolder holder, final int position) {        holder.bind(mImages.get(position));        holder.cancel.setOnClickListener(view -> {            int rpos = holder.getAdatpterpos();            removeAt(rpos, mImages.get(position).getSource());            Log.d(TAG, "imagesAdapter position = " + position);        });    }    @Override    public int getItemCount() {        Log.d(TAG, "imagesAdapter getItemCount = " + mImages.size());        return mImages.size();    }    public class ImageViewHolder extends RecyclerView.ViewHolder {        protected ImageView imageView;        private ImageButton cancel;        public ImageViewHolder(View itemView) {            super(itemView);            imageView = itemView.findViewById(R.id.news_pic_update_details);            cancel = itemView.findViewById(R.id.cancel_image);        }
查看完整描述

2 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

我想我知道为什么。您有 2 个独立的适配器,其中MainActivityFragment2 个不同的图像列表。

您将项目添加到 Fragment 中的列表中,但 MainActivity 中的列表从未更新。

所以当你调用upload_crime()MainActivity时,图像列表的大小始终为0。

您应该只在一处与适配器交互,最好是片段


查看完整回答
反对 回复 2023-07-28
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

Array当您想将信息从 a 传递到 other时,您就做错了Array。你不能这样做 -> mImages = images;

你可能会问为什么?...当你这样做时,mImages等于images,换句话说,如果你清除图像images.clear).. mImages也会被清除。

你需要做的mImages.addAll(images);通过这种方式,两者都会有相同的data,但都会不同,换句话说,如果你清除其中一个数组..另一个数组不会被清除。

请务必在您执行此操作的每个地方执行我告诉您的内容array = array

希望有帮助


查看完整回答
反对 回复 2023-07-28
  • 2 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信