Java recyclerview中的图像在Croll上不可见
我试图读取是否有任何图像,如果图像为空,我会使PostCard中的imageview消失。如果没有,则使用滑动加载 当我第一次加载recyclerview时,它就工作了。但是在一些滚动之后,这些图像视图就不可见了(View.gone) onBindViewHolder:Java recyclerview中的图像在Croll上不可见,java,android,android-recyclerview,Java,Android,Android Recyclerview,我试图读取是否有任何图像,如果图像为空,我会使PostCard中的imageview消失。如果没有,则使用滑动加载 当我第一次加载recyclerview时,它就工作了。但是在一些滚动之后,这些图像视图就不可见了(View.gone) onBindViewHolder: DataSnapshot d = topics.get(position); holder.text.setText(d.child("caption").getValue(String.class)); if
DataSnapshot d = topics.get(position);
holder.text.setText(d.child("caption").getValue(String.class));
if (d.child("type").getValue(String.class)!=null&&d.child("type").getValue(String.class).equals("image")){
Glide.with(c).load(d.child("image").getValue(String.class)).placeholder(R.drawable.background).centerCrop().into(holder.image);
}
else{
holder.image.setVisibility(View.GONE);
}
holder.name.setText(d.child("username").getValue(String.class));
holder.category.setText(d.child("category").getValue(String.class));
long millis = System.currentTimeMillis();
long posttime = d.child("time").getValue(Long.class);
long timedifference = millis-posttime;
int days = (int) (timedifference / (1000*60*60*24));
if (days<2){
holder.time.setText("Today");
}else {
holder.time.setText(days+" days ago");
}
if (d.child("pic").exists()){
Glide.with(c).load(d.child("pic").getValue(String.class)).placeholder(R.drawable.background).centerCrop().into(holder.pic);
}
DataSnapshot d=topics.get(位置);
holder.text.setText(d.child(“caption”).getValue(String.class));
if(d.child(“type”).getValue(String.class)!=null和&d.child(“type”).getValue(String.class).equals(“image”)){
Glide.with(c).load(d.child(“image”).getValue(String.class)).placeholder(R.drawable.background).centerCrop()放入(holder.image);
}
否则{
holder.image.setVisibility(View.GONE);
}
holder.name.setText(d.child(“用户名”).getValue(String.class));
holder.category.setText(d.child(“category”).getValue(String.class));
长毫秒=System.currentTimeMillis();
long posttime=d.child(“time”).getValue(long.class);
长时差=毫秒后时间;
整数天=(整数)(时差/(1000*60*60*24));
如果(天),请尝试以下代码片段:
if (d.child("type").getValue(String.class)!=null&&d.child("type").getValue(String.class).equals("image")){
Glide.with(c).load(d.child("image").getValue(String.class)).placeholder(R.drawable.background).centerCrop().into(holder.image);
holder.image.setVisibility(View.VISIBLE);
}
else{
holder.image.setVisibility(View.GONE);
}
当设置可见性时,它本身将不可见。
你需要在滑动加载图像时看到它,在加载图像时看到它
是空的
添加holder.image.setVisibility(View.VISIBLE);
在中,如果条件请尝试以下代码片段:
if (d.child("type").getValue(String.class)!=null&&d.child("type").getValue(String.class).equals("image")){
Glide.with(c).load(d.child("image").getValue(String.class)).placeholder(R.drawable.background).centerCrop().into(holder.image);
holder.image.setVisibility(View.VISIBLE);
}
else{
holder.image.setVisibility(View.GONE);
}
当设置可见性时,它本身将不可见。
你需要在滑动加载图像时看到它,在加载图像时看到它
是空的
添加holder.image.setVisibility(View.VISIBLE);
在if condition中,在将图像视图滑动到设置时,最好先设置可见性
我们永远不知道glide library更新会发生什么,以防it library想要访问维度。尤其是您在else部分中使其消失
,这与使不可见有点不同
if (d.child("type").getValue(String.class)!=null&&d.child("type").getValue(String.class).equals("image")){
holder.image.setVisibility(View.VISIBLE);
Glide.with(c).load(d.child("image").getValue(String.class)).placeholder(R.drawable.background).centerCrop().into(holder.image);
}
else{
holder.image.setVisibility(View.GONE);
}
在您将图像视图传递到“滑动”设置时,最好先设置可见性
我们永远不知道glide library更新会发生什么,以防it library想要访问维度。尤其是您在else部分中使其消失
,这与使不可见有点不同
if (d.child("type").getValue(String.class)!=null&&d.child("type").getValue(String.class).equals("image")){
holder.image.setVisibility(View.VISIBLE);
Glide.with(c).load(d.child("image").getValue(String.class)).placeholder(R.drawable.background).centerCrop().into(holder.image);
}
else{
holder.image.setVisibility(View.GONE);
}
RecyclerView
首次为第一个可见的数据对象创建新视图,当您滚动加载其他项目时,它将重用已滚动到顶部的视图,并再次为新数据项目重用这些视图
因此,无论该视图第一次创建时的可见性状态如何,它都将被保留,并将用于其他项目
您需要做的是显式设置视图可见
以再次显示:
if (d.child("type").getValue(String.class)!=null&&d.child("type").getValue(String.class).equals("image")){
holder.image.setVisibility(View.VISIBLE)
Glide.with(c).load(d.child("image").getValue(String.class)).placeholder(R.drawable.background).centerCrop().into(holder.image);
}
else{
holder.image.setVisibility(View.GONE);
}
RecyclerView
首次为第一个可见的数据对象创建新视图,当您滚动加载其他项目时,它将重用已滚动到顶部的视图,并再次为新数据项目重用这些视图
因此,无论该视图第一次创建时的可见性状态如何,它都将被保留,并将用于其他项目
您需要做的是显式设置视图可见
以再次显示:
if (d.child("type").getValue(String.class)!=null&&d.child("type").getValue(String.class).equals("image")){
holder.image.setVisibility(View.VISIBLE)
Glide.with(c).load(d.child("image").getValue(String.class)).placeholder(R.drawable.background).centerCrop().into(holder.image);
}
else{
holder.image.setVisibility(View.GONE);
}
我认为它不会影响图像不为空的特定位置。是的,代码对我很有用。非常感谢。我可以在5分钟后接受它作为答案。很乐意帮助:)我认为它不会影响图像不为空的特定位置。是的,那个代码对我很有用。非常感谢你。。我可以在5分钟后接受它作为答案。。很乐意帮助:)