一身转战三千里,一剑曾百万师。这篇文章主要讲述listitem中的Android listview imageview在滚动时隐藏相关的知识,希望能为你提供帮助。
在尝试动态设置列表项中的drawable
的可见性和图像imageview
时,我遇到了这个奇怪的问题。当它最初加载它的显示完全正常,但当我向上或向下滚动时,一些图像不会显示。
这是代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
Alarm o = items.get(position);
if (convertView == null)
{
convertView = View.inflate(mcontxt, R.layout.facelistitem, null);
holder = new ViewHolder();
holder.ind = (ImageView) convertView.findViewById(R.id.imgind);
holder.name = (TextView) convertView.findViewById(R.id.txtname);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder)convertView.getTag();
}if (o != null) {
String name;
StringBuilder strb = new StringBuilder().append(
pad(o.GetAlarmHour())).append(":").append(
pad(o.GetAlarmMinute()));
if (position == 0) {
name = "Add Alarm";
} else if ((o.getAlarmName() != null)
&
&
!o.getAlarmName().equals("")) {
name = o.getAlarmName().trim() + " - " + strb.toString();
} else {
name = strb.toString();
}//TextView tt = (TextView) v.findViewById(R.id.txtname);
//ImageView iv = (ImageView) v.findViewById(R.id.imgind);
if (holder.name != null) {
holder.name.setText(name);
}if (holder.ind != null) {
if (name.equalsIgnoreCase("Add Alarm"))
holder.ind.setVisibility(View.INVISIBLE);
if (o.IsAlarmOn())
holder.ind.setImageDrawable(mcontxt.getResources().getDrawable(
R.drawable.alarmon));
else
holder.ind.setImageDrawable(mcontxt.getResources().getDrawable(
R.drawable.alarmoff));
}
/*
* if(bt != null){ bt.setText("Status: "+ o.getOrderStatus());
}
*/
}
return convertView;
}
答案整个
ListView
变黑了吗?您可能需要设置:android:cacheColorHint="@android:color/transparent"
【listitem中的Android listview imageview在滚动时隐藏】在你的
ListView
。否则,您可能需要提供
INVISIBLE
设置的替代方案:if (name.equalsIgnoreCase("Add Alarm")) {
holder.ind.setVisibility(View.INVISIBLE);
} else {
holder.ind.setVisibility(View.VISIBLE);
}
如果你不这样做,那么回收的视图有时会是
INVISIBLE
,如果你不打算这样做。另一答案您需要做的就是在getView中将图像设置为VISIBLE,然后再将其设置为INVISIBLE / GONE(如有必要)。
在我的特定例子中:
holder.ivImageLeft.setVisibility(View.VISIBLE);
holder.ivImageRight.setVisibility(View.VISIBLE);
if (i == 0) {
holder.ivImageLeft.setVisibility(View.GONE);
} else {
holder.ivImageRight.setVisibility(View.GONE);
}
推荐阅读
- imageView.setImageBitmap图像空白(Android 4.4)
- Android(在MainActivity之外创建ImageView)
- 在android 5上设置ImageView colorFilter(api 21)
- 如何在Android Java中通过按钮的ID使用OnClickListener属性
- 为什么我可以像原始一样测试Wrappers的不等式(我可以为我创建的课程吗? [重复])
- Android String.format()返回问号(??)
- 是否可以通过openjdk在android上运行java应用程序
- 将参数从bootstrapper传递到msi bundle包
- AppSearch的序列号为50 - 对吧()