一口仨馍 2016-04-12 09:23 采纳率: 50%
浏览 1471
已采纳

ListView使用XUtils图片闪烁

ListView的每个item上都可能有时间不同的Timer定时器,每个item上可能显示图片(有活动显示图片)。
我填充了两种不同的item布局,一种带背景图片的,一种不带。如果任意item有倒计时,则Timer每秒调用一次adapter.notifyDataSetChanged。

现在的问题是图片偶尔、是偶尔可能会闪烁(个人猜测和Timer相关)。
product_newYear_img(宽度match_parent,高40dp),设置tag,但好像扔无济于事。求大神解决。
adapter相关代码如下。

@Override
public View getView(int position, View convertView, ViewGroup parent) {

// Log.i("TAG", "getView"+position);
if (convertView == null) {
Log.i("TAG", "convertView == null"+position);
holder = new ViewHolder();
if (getItemViewType(position) == 0) {// 有活动
convertView = mInflater.inflate(R.layout.homepage_product_list_item_activity, null);
holder.product_newYear_img = (ImageView) convertView.findViewById(R.id.product_newYear_img);
} else {
convertView = mInflater.inflate(R.layout.homepage_product_list_item, null);
}

        holder.product_title = (TextView) convertView.findViewById(R.id.product_title);
        holder.product_time = (TextView) convertView.findViewById(R.id.product_time);
        holder.product_apr_title = (TextView) convertView.findViewById(R.id.product_apr_title);
        holder.product_apr = (TextView) convertView.findViewById(R.id.product_apr);
        holder.product_time_limit = (TextView) convertView.findViewById(R.id.product_time_limit);
        holder.product_lowest = (TextView) convertView.findViewById(R.id.product_lowest);
        holder.product_progress = (RoundProgressBar) convertView.findViewById(R.id.product_progress);
        holder.product_status = (TextView) convertView.findViewById(R.id.product_status);
        holder.product_title_bt = (TextView) convertView.findViewById(R.id.product_title_bt);

        holder.product_relayout = (RelativeLayout) convertView.findViewById(R.id.product_relayout);
        holder.product_blankSpace = convertView.findViewById(R.id.product_blankSpace);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    if (getItemViewType(position) == 0) {//有活动

        if (!getItem(position).getActivitylist().equals(holder.product_relayout.getTag())) {
            mBitmapUtils.display(holder.product_relayout, getItem(position).getActivitylist());
            holder.product_relayout.setTag(getItem(position).getActivitylist());
        }
        if (!getItem(position).getActivitylist().equals(holder.product_newYear_img.getTag())) {
            mBitmapUtils.display(holder.product_newYear_img, getItem(position).getActivitybg());
            holder.product_newYear_img.setTag(getItem(position).getActivitybg());
        }

// mBitmapUtils.display(holder.product_relayout, getItem(position).getActivitylist());
// mBitmapUtils.display(holder.product_newYear_img, getItem(position).getActivitybg());
}else{
holder.product_relayout.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.item_selector));
}

    // 有补贴
    if (TextUtils.isEmpty(getItem(position).getApr_add())||getItem(position).getApr_add().equals(Constant.NUMBER_0)||Double.valueOf(getItem(position).getApr_add())==0) {
        holder.product_apr.setText(context.getString(R.string.product_apr_t,getItem(position).getApr()));
        holder.product_title_bt.setVisibility(View.GONE);
    }else{
        holder.product_apr.setText(context.getString(R.string.product_apr_total,getItem(position).getApr(),getItem(position).getApr_add()));
        holder.product_title_bt.setVisibility(View.VISIBLE);
    }

    holder.product_title.setText(getItem(position).getName());

    if (!TextUtils.isEmpty(getItem(position).getSurplus_time())) {
        Log.i("TAG", "getItem(position).getSurplus_time()="+getItem(position).getSurplus_time());
        holder.product_time.setText(getItem(position).getSurplus_time());
    }

    holder.product_apr_title.setText(context.getString(R.string.product_apr_title));
    holder.product_time_limit.setText(context.getString(R.string.product_time_limit, getItem(position).getTime_limit()));
    holder.product_lowest.setText(context.getString(R.string.product_lowest, DisplayFormat.intFormat(getItem(position).getLowest_account())));
    holder.product_status.setText(Utils.getProductStatus(type, getItem(position).getStatus(), getItem(position).getScales()));

    if (holder.product_status.getText().equals(Constant.PRODUCT_STATUS_HKZ1) ||
        holder.product_status.getText().equals(Constant.PRODUCT_STATUS_HKZ2)) {
        holder.product_progress.setCricleProgressColor(Color.LTGRAY);
    } else {
        holder.product_progress.setCricleProgressColor(context.getResources().getColor(R.color.rpb_roundProgressColor));
    }

    holder.product_progress.setProgress(Float.valueOf(getItem(position).getScales()));
    return convertView;
}
  • 写回答

2条回答

  • 一口仨馍 博客专家认证 2016-04-15 08:28
    关注

    自己解决了( !getItem(position).getActivitylist().equals(holder.product_newYear_img.getTag())
    这里写错了应该是( !getItem(position).getActivitybg().equals(holder.product_newYear_img.getTag())
    大家不要像我一样犯这种低级错误~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形