猿问

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

从代码片段中,我记录了一些调试点,发现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);

        }


动漫人物
浏览 107回答 2
2回答

潇湘沐

我想我知道为什么。您有 2 个独立的适配器,其中MainActivity有Fragment2 个不同的图像列表。您将项目添加到 Fragment 中的列表中,但 MainActivity 中的列表从未更新。所以当你调用upload_crime()MainActivity时,图像列表的大小始终为0。您应该只在一处与适配器交互,最好是片段

幕布斯7119047

Array当您想将信息从 a 传递到 other时,您就做错了Array。你不能这样做 ->&nbsp;mImages = images;。你可能会问为什么?...当你这样做时,mImages等于images,换句话说,如果你清除图像(images.clear)..&nbsp;mImages也会被清除。你需要做的是mImages.addAll(images);通过这种方式,两者都会有相同的data,但都会不同,换句话说,如果你清除其中一个数组..另一个数组不会被清除。请务必在您执行此操作的每个地方执行我告诉您的内容array = array。希望有帮助
随时随地看视频慕课网APP

相关分类

Java
我要回答