从代码片段中,我记录了一些调试点,发现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 个独立的适配器,其中MainActivity
有Fragment
2 个不同的图像列表。
您将项目添加到 Fragment 中的列表中,但 MainActivity 中的列表从未更新。
所以当你调用upload_crime()
MainActivity时,图像列表的大小始终为0。
您应该只在一处与适配器交互,最好是片段
幕布斯7119047
TA贡献1794条经验 获得超8个赞
Array
当您想将信息从 a 传递到 other时,您就做错了Array
。你不能这样做 -> mImages = images;
。
你可能会问为什么?...当你这样做时,mImages
等于images
,换句话说,如果你清除图像(images.clear
).. mImages也会被清除。
你需要做的是mImages.addAll(images);
通过这种方式,两者都会有相同的data
,但都会不同,换句话说,如果你清除其中一个数组..另一个数组不会被清除。
请务必在您执行此操作的每个地方执行我告诉您的内容array = array
。
希望有帮助
添加回答
举报
0/150
提交
取消