從代碼片段中,我記錄了一些調試點,發現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
提交
取消