Android: RecyclerView 显示图像 2 次

Android: RecyclerView Show images 2 times

我的应用程序从 firebase-Realtime 获取图像,我正在使用 recyclerview 来显示它们,但它显示图像 2 次,这意味着如果我在 firebase 上有 5 张图像,它会显示相同的 5 张图像,但会复制它们,这是10 张图片。

我的应用从 firebase-Realtime 获取图像,

我的适配器:

 @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.private_code_recycler_layout, parent, false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {
 
        Picasso.get()
                .load(mImages.get(position))
                .placeholder(R.drawable.ic_baseline_cloud_download_24)
                .memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)
                .resize(480,480)
                .into(holder.image);


        holder.parentLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(mContext, FullScreenImageViewActivity.class);
                intent.putExtra("ImageURL", mImages.get(position));
                mContext.startActivity(intent);
            }
        });
    }

Activity:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityWorkDetailsBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        workUid_details = getIntent().getExtras().getString("UID_Details");
        String title = getIntent().getExtras().getString("name");
        String description = getIntent().getExtras().getString("description");
        String location = getIntent().getExtras().getString("location");
        String path = getIntent().getExtras().getString("path");

        databaseReference = FirebaseDatabase.getInstance().getReference().child("Work").child(path);
        valueEventListener = new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                binding.workDetailsTitle.setText(title);
                binding.workDetailsDescription.setText(description);
                binding.workDetailsLocation.setText(location);
                binding.getUIDDetails.setText(workUid_details);

                for (DataSnapshot dataSnapshot : snapshot.child("images").getChildren()) {
                    String value = String.valueOf(dataSnapshot.child("image").getValue());
                    imagesFromURL.add(value);
                }
                initRecyclerView();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) { }
        };

    }

    private void initRecyclerView(){
        binding.workDetailsImage.setNestedScrollingEnabled(false);
        binding.workDetailsImage.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
        binding.workDetailsImage.setHasFixedSize(true);
        WorkDetailsAdapter adapter = new WorkDetailsAdapter(this, imagesFromURL);
        binding.workDetailsImage.setAdapter(adapter);
        binding.progressBar.setVisibility(View.VISIBLE);
    }

在添加 imageUrl 之前添加 imagesFromURL.clear();

imagesFromURL.clear();//add this line
for (DataSnapshot dataSnapshot : snapshot.child("images").getChildren()) {
    String value = String.valueOf(dataSnapshot.child("image").getValue());
    imagesFromURL.add(value);
}