无需 OnClick 即可为不同的 ListView 项目自定义背景色

问题描述

我写了一个带有适配器和模型的 ListView。我想通过程序在 for 循环中向 ListView 添加一个双精度值。假设一个值 范围红色。

如果没有 OnClick 方法,我怎么能做到这一点?

就像现在一样,整个列表将以上次选择的颜色着色。

该模型具有以下值,带有构造函数和getter和setter

public class ListModel{

private String name;
private String value;
private String range;
private String info;
private String color;

我的适配器

public class IngredientsAdapter extends ArrayAdapter<IngredientsListModel> {

private static final String TAG = "Ingredientslistadapter";

private Context mContext;
int mRessource;

public IngredientsAdapter(Context context,int resource,ArrayList<IngredientsListModel> objects) {
    super(context,resource,objects);
    this.mContext = context;
    this.mRessource =  resource;
}

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

    // @R_365_4045@ionen der Inhaltsstoffe
    String name = getItem(position).getIngredientsName();
    String val = getItem(position).getValue();
    String range = getItem(position).getRange();

    // Kreiere ein IngredientsListModel Objekt mit diesen @R_365_4045@ionen
    IngredientsListModel ingredients = new IngredientsListModel(name,val,range);

    LayoutInflater inflater = LayoutInflater.from(mContext);
    convertView = inflater.inflate(mRessource,parent,false);

    TextView tvIngredientsName = (TextView) convertView.findViewById(R.id.txtitem);
    TextView tvValue = (TextView) convertView.findViewById(R.id.txtitem2);
    TextView tvRange = (TextView) convertView.findViewById(R.id.txtitem3);

    tvIngredientsName.setText(name);
    tvValue.setText(val);
    tvRange.setText(range);

    return convertView;
}

}

我的主要

    if ((value >= x) && (value <= y)){
        ingredients = new IngredientsListModel(key,Double.toString(roundOff) + "g",x + " - " + y);
        mIngredientsListView.setBackgroundColor(Color.GREEN);
        ingredientsList.add(ingredients);
        ingredientsAdapter.notifyDataSetChanged();
          
    }else if((value < x)){
        ingredients = new IngredientsListModel(key,Double.toString(roundOff) + "g zu niedrig",x + " - " + y);
        mIngredientsListView.setBackgroundColor(Color.YELLOW);
        ingredientsList.add(ingredients);
        ingredientsAdapter.notifyDataSetChanged();


    }else if((value > x)){
        ingredients = new IngredientsListModel(key,Double.toString(roundOff) + "g zu hoch",x + " - " + y);
        mIngredientsListView.setBackgroundColor(Color.RED);
        ingredientsList.add(ingredients);
        ingredientsAdapter.notifyDataSetChanged();
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)