微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

适配器在android中无法正常工作

如何解决适配器在android中无法正常工作

我正在从Firebase检索多个项目的多个图像。从Firebase成功检索了图片,但是显示图像时,Recycler Adapter在另一个项目图像中显示一个项目的图像,而在另一个项目图像中不显示。它最初发生在前两个项目中,但是当我连续上下滚动时,它发生在不同的项目中。我想可能是我用来存储图像的列表的大小。

private ArrayList<String> imagesList = new ArrayList<>();
 FirebaseRecyclerAdapter<projects,ProjectViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<projects,ProjectViewHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull final ProjectViewHolder projectViewHolder,int i,@NonNull projects projects)
            {
                Log.d("counting",String.valueOf(i));
                imagesRef = getRef(i).child("projectimageUrl");
                final int count =0 ;
                imagesRef.addValueEventListener(new ValueEventListener()
                {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot)
                    {
                        if(dataSnapshot.exists())
                        {

                            imagesList.clear();
                            //Loop which I am running 
                            for(DataSnapshot postSnap : dataSnapshot.getChildren())
                        {
                            String urls = postSnap.getValue().toString();
                            Log.d("NewImagesName",urls);
                            imagesList.add(urls);

                        }
                            //Recycler View
                            projectViewHolder.all_images.setLayoutManager(new GridLayoutManager(getApplicationContext(),1));
                            ItemOffsetdecoration itemdecoration = new ItemOffsetdecoration(getApplicationContext(),R.dimen.item_offset);
                            projectViewHolder.all_images.addItemdecoration(itemdecoration);
                            layoutManager = new linearlayoutmanager(getApplicationContext(),linearlayoutmanager.HORIZONTAL,false);
                            projectViewHolder.all_images.setHasFixedSize(true);
                            projectViewHolder.all_images.setLayoutManager(layoutManager);


                            Imageslistadapter imageslistadapter = new Imageslistadapter(getApplicationContext(),imagesList,listener);
                            projectViewHolder.all_images.setAdapter(imageslistadapter);
}

 public static  class ProjectViewHolder extends RecyclerView.ViewHolder
    {
        RecyclerView all_images ;
        public ProjectViewHolder(@NonNull View itemView) {
        all_images =(RecyclerView)itemView.findViewById(R.id.imagesRecyclerView) ;
    }

这里是适配器

public class Imageslistadapter extends RecyclerView.Adapter<Imageslistadapter.ImageViewHolder>
{
    Context context;
    ArrayList<String> imagesList;

    IRecylerViewInterfaceListener clickListener ;

    public Imageslistadapter(Context context,ArrayList<String> imagesList,IRecylerViewInterfaceListener clickListener)
    {
        this.context = context;
        this.imagesList = imagesList;
        this.clickListener =clickListener;
    }


    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @NonNull
    @Override
    public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType)
    {


        View  v = LayoutInflater.from(parent.getContext()).inflate(R.layout.gallery_item,parent,false);
        return  new ImageViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull ImageViewHolder holder,int position)
    {
        String newCurrentimage =  imagesList.get(position);
        Log.d("currentimage",newCurrentimage);
        ImageView imageView = holder.imageView;
        final ProgressBar progressBar = holder.progressBar;
        Glide.with(context.getApplicationContext()).load(newCurrentimage).listener(new RequestListener<String,GlideDrawable>() {
            @Override
            public boolean onException(Exception e,String model,Target<GlideDrawable> target,boolean isFirstResource)
            {
                return false;
            }

            @Override
            public boolean onResourceReady(GlideDrawable resource,boolean isFromMemoryCache,boolean isFirstResource)
            {
                progressBar.setVisibility(View.GONE);
                return false;
            }
        }).into(imageView);

    }

    @Override
    public int getItemCount()
    {
            return imagesList.size();
    }

这是图片中发生的事情

enter image description here

这里是实际图片

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。