Reputation: 23
I have set some conditions for my text views, but when I scroll my list view, some values and later all of them, change status and meet the condition even though 9 is not equal to 5.
what should I do?
p.s.: i tried two different ways for setting conditions
@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;
Upvotes: 0
Views: 37
Reputation: 2491
You must also set text color to your TextView
s even when not meeting condition because View
s are recycled in ListView
. This means that your previously set text color will show up in another item even if condition is not met.
Make the following edit to your code.
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);
}
Upvotes: 1