У меня есть список с настроенным ArrayAdapter. Когда в ArrayAdapter изменился, графический интерфейс должен обновляться. Однако, когда он должен обновиться, он не будет, если вы не нажмете клавишу на эмуляторе. Кликабельные строки также не активны, если я не нажал на произвольную кнопку в эмуляторе.
Базовые данные для просмотра списка изменяются где-то еще и затем уведомляют наблюдателя (в этом случае просмотр списка)
public void update(java.util.Observable arg0, Object arg1)
{
Log.e("Supposed","to update");
ad.notifyDataSetChanged(); //Ad is the arrayadapter
}
Данные отображаются правильно после волшебного прикосновения к кнопкам. Но почему?
Какие-нибудь мысли?
Когда я проверяю ссылку на ArrayAdapter, он показывает обновленные значения, но это не так.
Пожалуйста, помогите
редактирование:
private class MustAdapter extends ArrayAdapter<Item>
{
public MustAdapter(Context context, int textViewResourceId, ArrayList<Item> items)
{
super(context,textViewResourceId,items);
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
Item o = items.get(position);
if (o != null) {
TextView tt = (TextView) v.findViewById(R.id.text1);
TextView bt = (TextView) v.findViewById(R.id.text2);
ImageView iv= (ImageView) v.findViewById(R.id.img);
ImageView ib = (ImageView)v.findViewById(R.id.OnOffButt);
if (ib != null) {
ib.setTag(position);
if (((Ventilation)o).enabled ==0 ) {
ib.setImageResource(android.R.drawable.ic_input_delete);
}
else
ib.setImageResource(android.R.drawable.ic_input_add);
ib.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
int index=((Integer)arg0.getTag()).intValue();
Ventilation v= (Ventilation)items.get(index);
v.enabled=v.enabled != 0 ? 0 : 1;
//ad.notifyDataSetChanged();
DU.toggle(v);
}
});
}
if (iv !=null){
iv.setImageResource(R.drawable.fan);
}
if (tt != null) {
tt.setText(""+((Ventilation)o).actual); }
if(bt != null){
bt.setText(""+((Ventilation)o).setPoint);
}
}
return v;
}
Даже когда я использую arrayadapter.add (item), мне нужно нажать где-нибудь еще, чтобы перезагрузить