listitem中的Android listview imageview会在滚动中隐藏

在尝试动态设置列表项中的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"

在你的ListView

否则,您可能需要为您的INVISIBLE设置提供替代方法:

if (name.equalsIgnoreCase("Add Alarm")) {
    holder.ind.setVisibility(View.INVISIBLE);
} else {
    holder.ind.setVisibility(View.VISIBLE);
}

如果你不这样做,那么当你不打算这样做时,回收的意见有时会被INVISIBLE


所有你需要做的就是将你的图像设置为在getView中可见,然后再次设置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);
    }
链接地址: http://www.djcxy.com/p/67337.html

上一篇: Android listview imageview in listitem gets hidden on scroll

下一篇: How to refresh Android listview?