当我滚动listview时,值会发生变化

时间:2015-08-31 20:03:34

标签: android

我为我的文本视图设置了一些条件,但是当我滚动列表视图时,某些值以及之后的所有值,即使9不等于5,也会更改状态并满足条件。

我该怎么办?

p.s。:我尝试了两种不同的方法来设置条件

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

    View row = convertView;
    LayoutHandler layoutHandler;
        if (row == null){
            LayoutInflater layoutInflater =(LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row=layoutInflater.inflate(R.layout.row_layout,parent,false);
            layoutHandler = new LayoutHandler();
            layoutHandler.NUMER1=(TextView)row.findViewById(R.id.lin11);
            layoutHandler.NUMER2=(TextView)row.findViewById(R.id.lin12);
            layoutHandler.NUMER3=(TextView)row.findViewById(R.id.lin13);
            row.setTag(layoutHandler);
        }

    else {
            layoutHandler = (LayoutHandler)row.getTag();
        }

    DataProvider dataProvider = (DataProvider)this.getItem(position);
    layoutHandler.NUMER1.setText(dataProvider.getNum1());
    layoutHandler.NUMER2.setText(dataProvider.getNum2());
    layoutHandler.NUMER3.setText(dataProvider.getNum3());

    String equalll = "5";

    if (layoutHandler.NUMER1.getText().toString().equals(equalll)){
        layoutHandler.NUMER1.setTextColor(Color.GREEN);
    }

    if (dataProvider.getNum2().equals(equalll)) {
        layoutHandler.NUMER2.setTextColor(Color.GREEN);
    }

    if (dataProvider.getNum3().equals(koti)) {
        layoutHandler.NUMER3.setTextColor(Color.GREEN);
    }

    return row;

1 个答案:

答案 0 :(得分:1)

即使不符合条件,您也必须为TextView设置文字颜色,因为View已在ListView中回收。这意味着即使不满足条件,您之前设置的文本颜色也会显示在另一个项目中。

对您的代码进行以下编辑。

if (layoutHandler.NUMER1.getText().toString().equals(equalll)){
    layoutHandler.NUMER1.setTextColor(Color.GREEN);
} else {
    layoutHandler.NUMER1.setColor(YOUR_DEFAULT_COLOR);
}

if (dataProvider.getNum2().equals(equalll)) {
    layoutHandler.NUMER2.setTextColor(Color.GREEN);
} else {
    layoutHandler.NUMER2.setColor(YOUR_DEFAULT_COLOR);
}

if (dataProvider.getNum3().equals(koti)) {
    layoutHandler.NUMER3.setTextColor(Color.GREEN);
} else {
    layoutHandler.NUMER3.setColor(YOUR_DEFAULT_COLOR);
}