コメント ボックスを作成する ArrayAdapter クラスがあります。コメント ボックス内に青または黒のボタンがあります。ボタンの色は、JSON を介して受け取った配列に依存します。配列がこのように見える場合、"NO","NO","YES","NO","NO","NO"
3 番目のボタンには青色のテキストが表示されます。私の JSON と ArrayAdapter クラスは、一度に 7 つのコメント ボックスを作成します。問題は、コードがボタンを青色に変更すると、ボタンが継続的に青色に変更されることです。つまり、このような配列が受信された場合"NO","NO","YES","NO","NO","NO"
、3 番目のボタンは青色になり、別の一連のコメントを受信するので、今回は配列は次のようになります"NO","NO","NO","NO","NO","NO"
このコードによれば、どのボタンも青色であってはなりませんが、何らかの理由で 3 番目のボタンは青色のままです。さらに複数のコメント セットを読み込むことができ、3 番目のボタンは、コードで黒にする必要があることが明確に示されていても、常に青になります。奇妙なことに、ボタンは青ですが、黒のボタンのように機能します。これが私の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