我有一个创建评论框的 ArrayAdapter 类。评论框中有一个按钮,可以是蓝色或黑色。按钮的颜色取决于通过 JSON 接收的数组。如果数组看起来像这样"NO","NO","YES","NO","NO","NO"
,第三个按钮将有蓝色文本。我的 JSON 和 ArrayAdapter 类一次创建 7 个评论框。问题是一旦代码将按钮更改为蓝色,它就会不断地将按钮更改为蓝色。我的意思是如果收到一个看起来像这样的数组,"NO","NO","YES","NO","NO","NO"
第三个按钮将是蓝色的,然后我收到另一组评论,所以这次数组看起来像这样"NO","NO","NO","NO","NO","NO"
根据此代码,没有按钮应该是蓝色的,但由于某种原因,第三个按钮仍然是蓝色的。我可以加载多组注释,第三个按钮将始终为蓝色,即使代码清楚地表明它应该是黑色的。奇怪的是,按钮会是蓝色的,但会像黑色按钮一样工作。这是我的 ArrayAdapter,
class ListAdapter extends ArrayAdapter<Item> {
public ListAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
}
private List<Item> items;
public ListAdapter(Context context, int resource, List<Item> items) {
super(context, resource, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi;
vi = LayoutInflater.from(getContext());
v = vi.inflate(R.layout.list_item_layout, null);
}
final Item p = items.get(position);
if (p != null) {
//set xml objects
//must be done inside of class
ButtonListViewItem = (TextView) v.findViewById(R.id.button_listview_item);
if(p.getJSONArray().equals("NO")){
ButtonListViewItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ButtonListViewItem.setTextColor(0xff000000);
new AsyncTask().execute();
}//end on click
});
}//end if equals NO
if(p.getJSONArray().equals("YES")){
ButtonListViewItem.setClickable(false);
ButtonListViewItem.setTextColor(0xff3399FF);
}//end if equals yes
}//end if null
return v;
}//end getView
}//end ListAdapter class