如何解决适配器在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();
}
这是图片中发生的事情
这里是实际图片
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。