滚动时 Android-Listview 项目背景颜色更改 [英] Android-Listview items background color changing when scrolling

查看:26
本文介绍了滚动时 Android-Listview 项目背景颜色更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的ListView 包含两个Textviews.在一行中,第一个是名称,第二个是结果.我需要根据结果更改结果 TextView 的背景颜色.就像如果通过然后结果 TextView 颜色将是绿色,当失败结果 TextView 颜色将是红色.我的 ListView 中有十行.我试过这样

My ListView contains two Textviews. In one row first one is for name and second one is for result. I need to change the background color of the result TextView according to the result. Like if pass then the result TextView color will be green when fails result TextView color will be red.I have ten rows in my ListView. I have tried like this

    @Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

    ViewHolder holder;
    if(convertView==null)
    {
        holder = new ViewHolder();
        convertView = inflater.inflate(R.layout.items, null);

        holder.imgViewLogo = (ImageView) convertView.findViewById(R.id.imgViewLogo);
        holder.txtViewTitle = (TextView) convertView.findViewById(R.id.txtViewTitle);
        holder.txtViewDescription = (TextView) convertView.findViewById(R.id.txtViewDescription);
        holder.txtholder = (TextView) convertView.findViewById(R.id.holder1);
        holder.img = (ImageView)  convertView.findViewById(R.id.temperrr);
        convertView.setTag(holder);
    }
    else
        holder=(ViewHolder)convertView.getTag();

    ItemBean bean = (ItemBean) itemList.get(position);

    holder.imgViewLogo.setImageResource(bean.getImage());
    holder.txtViewTitle.setText(bean.getTitle());
    holder.txtViewDescription.setText(bean.getDescription());
  //------------------  
    if (position==0)
    {
        if(GridviewAdapter.glu>=81)
        {
        holder.img.setImageResource(R.drawable.red_arrow);
        holder.txtViewDescription.setBackgroundResource(R.color.resultred);  
        holder.txtholder.setBackgroundResource(R.color.resultred);  
        }
        else if (GridviewAdapter.glu==79||GridviewAdapter.glu==80)
        {
            holder.img.setImageResource(R.drawable.orange_arrow);
            holder.txtViewDescription.setBackgroundResource(R.color.resultoren);  
            holder.txtholder.setBackgroundResource(R.color.resultoren);  
        }
        else
        {
            holder.img.setImageResource(R.drawable.resultarrawnocolor);
            holder.txtViewDescription.setBackgroundResource(0);  
            holder.txtholder.setBackgroundResource(0);  
        }

    }
        holder.img.setImageResource(R.drawable.resultarrawnocolor);
       return convertView;
}

但是,当滚动列表时,另一个随机项目的背景颜色会发生变化.我必须做什么.?如何控制 listview 中每个位置的项目.上面的代码仅用于第一行.我对吗?

But, when scrolling the list the another random items's background color changing.what I have to do .? How can I control the items at each position in the listview . The above code is for just for the first row. am I right?

推荐答案

试试这个

     @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        ViewHolder holder;
        if(convertView==null)
        {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.items, null);

            holder.imgViewLogo = (ImageView) convertView.findViewById(R.id.imgViewLogo);
            holder.txtViewTitle = (TextView) convertView.findViewById(R.id.txtViewTitle);
            holder.txtViewDescription = (TextView) convertView.findViewById(R.id.txtViewDescription);
            holder.txtholder = (TextView) convertView.findViewById(R.id.holder1);
            holder.img = (ImageView)  convertView.findViewById(R.id.temperrr);
            convertView.setTag(holder);
        }
        else
            holder=(ViewHolder)convertView.getTag();




        ItemBean bean = (ItemBean) itemList.get(position);

        holder.imgViewLogo.setImageResource(bean.getImage());
        holder.txtViewTitle.setText(bean.getTitle());
        holder.txtViewDescription.setText(bean.getDescription());


//**********SET ALSO YOUR DEFAULT BACKGROUND HERE******** like//

     holder.txtViewDescription.setBackgroundResource(R.color.DEFAULCOLOR);  
     holder.txtholder.setBackgroundResource(R.color.DEFAULCOLOR); 
     holder.img.setImageResource(R.drawable.defalut_image);


//**********SET ALSO YOUR DEFAULT BACKGROUND HERE******** ok//


      //------------------  
        if (position==0)
        {
            if(GridviewAdapter.glu>=81)
            {
            holder.img.setImageResource(R.drawable.red_arrow);
            holder.txtViewDescription.setBackgroundResource(R.color.resultred);  
            holder.txtholder.setBackgroundResource(R.color.resultred);  
            }
            else if (GridviewAdapter.glu==79||GridviewAdapter.glu==80)
            {
                holder.img.setImageResource(R.drawable.orange_arrow);
                holder.txtViewDescription.setBackgroundResource(R.color.resultoren);  
                holder.txtholder.setBackgroundResource(R.color.resultoren);  
            }
            else
            {
                holder.img.setImageResource(R.drawable.resultarrawnocolor);
                holder.txtViewDescription.setBackgroundResource(0);  
                holder.txtholder.setBackgroundResource(0);  
            }

        }
            holder.img.setImageResource(R.drawable.resultarrawnocolor);
           return convertView;
    }

这篇关于滚动时 Android-Listview 项目背景颜色更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆