我有每个ListView项目的按钮。每个按钮都以绿色或灰色开始,具体取决于JSON数组。如果按钮开始呈绿色,则单击它后会变为灰色。如果按钮在点击后变为灰色,则变为绿色。问题是当我向上滚动并离开按钮的视图然后回到按钮时它已经变回原来的颜色。这是我按钮的代码,
if(p.JSONarray().equals("NO")){
button.setBackgroundResource(R.drawable.gray);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View button) {
button.setBackgroundResource(R.drawable.green);
}//end on click
});
}//end if equals NO
if(p.JSONarray().equals("YES")){
button.setBackgroundResource(R.drawable.green);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View button) {
button.setBackgroundResource(R.drawable.gray);
}//end on click
});
}//end if equals yes
为什么按钮一旦离开视图就会恢复原来的颜色?
答案 0 :(得分:1)
颜色更改回默认值,因为再次创建视图。您需要维护一个已经点击的Button
位置列表,这样当您在getView
中再次到达该位置时,您可以更改按钮的颜色
答案 1 :(得分:0)
您需要设置else条件以保持按钮的颜色。 在您的情况下,您的代码应该是这样的:
if(p.JSONarray().equals("YES")){
button.setBackgroundResource(R.drawable.green);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View button) {
button.setBackgroundResource(R.drawable.gray);
}//end on click
});
}else
{
button.setBackgroundResource(R.drawable.gray);
}