ListView волнуется, когда я пытаюсь обновить ArrayAdapter, это заголовок? - PullRequest
0 голосов
/ 23 июля 2011

У меня есть этот ListView, который использует адаптер массива:

//global
ArrayList<Location> locations=new ArrayList<Location>(); //array list of location objects
ArrayAdapter<Location> theLocations;
ListView listView;

, затем в onCreateView моего фрагмента:

    theLocations = new ArrayAdapter<Location>(mContext, 
          R.layout.location_row, locations);
    listView.setAdapter(theLocations);

Это работает довольно хорошо, я думаю, хотя, если я пытаюсьчтобы обновить этот адаптер, он выходит из себя ...

//in my fragment, another dialog makes this call here to update the list.
public void onUIUpdate(Location l) { //listener call back when dialog "ok" clicked
    locations.add(l); //it is okay with this.
    theLocations.notifyDataSetChanged(); //dies
}

Он умирает с ошибкой:

07-23 08:03:28.655: ERROR/AndroidRuntime(509): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView

означает, что ему не нравится Местоположениев ArrayAdapter ???Значит ли это, что я должен сделать свой собственный нестандартный список?Если я не вызываю theLocations.notifyDataSetChanged (), то все в порядке, но тогда ничего не обновляется ...: (

Я должен отметить, что toString () в классе Location переопределяется, чтобы возвращать имя String;

после комментария я попробовал это:

public void onUIUpdate(Location l) {
    locations.add(l);
    //theLocations.notifyDataSetChanged();
    WrapperListAdapter wr = (WrapperListAdapter)listView.getAdapter();
    ArrayAdapter aa=(ArrayAdapter)wr.getWrappedAdapter();
    aa.notifyDataSetChanged();
}

LOL не повезло, был удар в темноте. Также блуждал, если его addHeaderView я использовал на ListView? Я не уверен, еслиэто делает его неизменным в будущем, используя addHeaderView?

1 Ответ

0 голосов
/ 23 июля 2011

Я не буду комментировать дизайн ListView, он очень уродливый, но я делаю listView.getAdapter (). GetWrappedAdapter (). NotifyDataSetChabged ();и это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...