如何仅更改符合条件的文本视图的颜色?

问题描述

基本上,我有一个列表,我想要的是对于符合条件的文本视图,其颜色会有所不同。

public class CustomTempAdapter extends ArrayAdapter<String> {
  private Context mContext;
  private int id;
  private List<String> items;

  public CustomTempAdapter(Context context,int textViewResourceId,List<String> list) {
    super(context,textViewResourceId,list);
    mContext = context;
    id = textViewResourceId;
    items = list;
  }

  @Override
  public View getView(int position,View v,ViewGroup parent) {
    View mView = v;
    if (mView == null) {
      LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      mView = vi.inflate(id,null);
    }

    TextView text = (TextView) mView.findViewById(R.id.tempView);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
      items.forEach(item -> {
        if (Double.parseDouble(item) > 100.00) {

          text.setBackgroundColor(Color.RED);
          int color = Color.argb(200,255,64,64);
          text.setBackgroundColor(color);
        }
      });
    }

    return mView;
  }
}
 CustomTempAdapter adapter = new CustomTempAdapter(this,R.layout.customTextView,normalStrings);
    ListView list = findViewById(R.id.customListView);
    list.setAdapter(adapter);

当前,这仅显示空白文本视图。我尝试了另一种方法。这次使用普通的ArrayAdapter<String>,然后每添加一个项目:

View v;
for (int i = 0; i < list.getChildCount(); i++) {
  v = list.getChildAt(i);
  TextView tv = v.findViewById(R.id.tempView);
  if (tv != null && Double.parseDouble(tv.getText().toString()) > 100)
    tv.setTextColor(Color.parseColor("#FF0000"));
}

以这种方式,我遍历所有文本视图并尝试更改其颜色。它不起作用。

解决方法

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

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

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