Адаптация списка в фрагменте списка на honeycomb с api совместимости

#android #android-3.0-honeycomb #listadapter

#Android #android-3.0-honeycomb #listadapter

Вопрос:

Я использую API совместимости для предоставления своего приложения на устройствах Android Gingerbread и honeycomb. Я создал ListFragment и установил свою собственную ListAdapter реализацию на ListFragment :

 ListableAdapter adapter = new ListableAdapter(this.savedItems, (BaseActivity) this.getActivity());
this.setListAdapter(adapter);
  

ListAdapter Реализует getView метод следующим образом:

 public View getView(int pos, View convertView, ViewGroup parent) {
Log.d(this.getClass().getName(), "building list item @ "   pos);
View v = convertView;
if (!this.savedItems.isEmpty() amp;amp; (pos < this.savedItems.size())) {
  if (v == null) {
    LayoutInflater vi = (LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    v = vi.inflate(R.layout.saved_list_item, null);
  }

  Listable item = this.savedItems.get(pos);
  Log.d(this.getClass().getName(), "Item @ "   pos   ": "   item.getDisplayName());
  if (item != null) {
    ImageView icon = (ImageView) v.findViewById(R.id.saved_item_icon);
    TextView title = (TextView) v.findViewById(R.id.saved_item);
    StarField star = (StarField) v.findViewById(R.id.favorit);
    star.setEnabled(false);

    icon.setImageResource(item.getImageID());
    title.setText(item.getDisplayName());
    star.setChecked(item.isFavorit());
  }
}
// this.pos  ;
return v;
}
  

На устройствах Gingerbread (Samsung Galaxy S2) это работает очень хорошо. Мой список заполнен так, как я ожидал. На моем GalaxyTab 10.1 (Android 3.1) параметр pos присутствует в каждом вызове 0 , поэтому у меня есть только один элемент списка.

Кто-нибудь знает, почему ListFragment вызовы getView с этими странными параметрами?

Ответ №1:

вы пытались не приводить Activity к BaseActivity? Что произойдет, если вместо этого использовать getActivity() .

В какой части жизненного цикла фрагмента вы настраиваете адаптер?

С наилучшими пожеланиями, Тим

Комментарии:

1. BaseActivity — это моя собственная реализация, которая расширяется от FragmentActivity. Он просто предоставляет моим действиям некоторые общие функции. Я настраиваю адаптер в onResume методе.

2. Пожалуйста, попробуйте настроить адаптер в onActivityCreated. С наилучшими пожеланиями, Тим