如何根据列表项的值更改其背景颜色



我有一个数据库中的项目列表,其值为0、1或2。我使用了一个simplecursor适配器和一个具有显示列表视图的活动。现在我想改变每个项目的背景颜色来反映它的值,即我想让值为0的项目的背景为绿色,值为1的项目的背景为黄色,值为2的项目的背景为红色。我该怎么做呢?我的适配器和活动目前有黑色背景。

您可以检查getView()中的position值,并为索引行提供您想要的背景颜色。

您需要为列表视图的单个列表项创建XML布局文件。然后创建一个适配器类。在其中膨胀XML视图。在getView()方法中检查你的逻辑

这是我的适配器类getView()。

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    ViewHolder holder;
      if (convertView == null) {
       convertView = mInflater.inflate(R.layout.home_list_item, null);
       holder = new ViewHolder();
       holder.mTxtContactName = (TextView) convertView.findViewById(R.id.txtContactName);
       holder.mTxtContactNumber = (TextView) convertView.findViewById(R.id.txtContactNumber);
       holder.mTxtContactAdd = (TextView) convertView.findViewById(R.id.txtContactAddress);
       holder.mImgCall = (ImageButton) convertView.findViewById(R.id.imgCall);
       holder.mImgSms = (ImageButton) convertView.findViewById(R.id.imgSms);
       convertView.setTag(holder);
      } else {
       holder = (ViewHolder) convertView.getTag();
      }
        holder.mTxtContactName.setText(list.get(position).getContactName());
        holder.mTxtContactNumber.setText(list.get(position).getContactNumber());
        holder.mTxtContactAdd.setText(list.get(position).getContactAdd());
        holder.mImgSms.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Log.d("con", "SMS");
                Intent smsIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+list.get(position).getContactNumber())); 
                context.startActivity(smsIntent);
            }
        });
        holder.mImgCall.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel://"+list.get(position).getContactNumber())); 
                context.startActivity(callIntent);
            }
        });

     return convertView;
     }
     static class ViewHolder {
      TextView mTxtContactName;
      TextView mTxtContactNumber;
      TextView mTxtContactAdd;
      ImageButton mImgCall;
      ImageButton mImgSms;
     }

在适配器的getView()中进行检查,如下所示

if(item.getValue()==0)
   v.setBackgroundColor(Color.GREEN);
else if(item.getValue()==1)
    v.setBackgroundColor(Color.YELLOW);
else
    v.setBackgroundColor(Color.RED);

item是你的对象,getValue()是你的值0 1 2

相关内容

  • 没有找到相关文章

最新更新