在Android ListView中设置项目的背景色

时间:2018-09-03 12:12:55

标签: android listview

我们有一个带有以下适配器代码的androd列表视图。

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

        final ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            LayoutInflater mInflater = (LayoutInflater) 
            context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView = mInflater.inflate(R.layout.single_item, null);
            holder.name = (TextView) convertView
                    .findViewById(R.id.name);
            } else {
            holder = (ViewHolder) convertView.getTag();
        }
  items itm = items.get(position);

  Button stat = (Button) convertView.findViewById(R.id.status);

  holder.items = itm;

  stat.setOnClickListener(new View.OnClickListener()
  {
      @Override
      public void onClick(View v)
      {             
          Intent i = new Intent(context, anotherActivity.class);
          i.putExtra("name", holder.items.getName());
          context.startActivity(i);
      }
  });
  if(itm.getStatus() == 1) {
       convertView.setBackgroundColor(Color.parseColor("#f2dededb"));
       stat.setText("No");
       stat.setEnabled(false);
   }  
  return convertView;
 }

列表中有多个项目,我们正在尝试根据一些标志设置特定项目的背景色。但是颜色是随机设置的。

2 个答案:

答案 0 :(得分:1)

您还必须为其他项目设置color

if(itm.getStatus() == 1) {
            convertView.setBackgroundColor(Color.parseColor("#f2dededb"));
            stat.setText("No");
            stat.setEnabled(false);
} else {
      convertView.setBackgroundColor(Color.parseColor("//Default color"));
      // Any other code 
}

如果要在color / ListView中以某种条件为任何项目设置Recyclerview,则还必须为其他项目设置color。(对于任何项目均有效其他条件)

答案 1 :(得分:0)

if(itm.getStatus() == 1) {
    convertView.setBackgroundColor(ContextCompat.getColor(context,R.color.colorPrimary);

} else {
    convertView.setBackgroundColor(ContextCompat.getColor(context,R.color.colorPrimary));
}

您可以根据条件设置颜色。