Я использую 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() && (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 Devices (Samsung Galaxy S2) это работает очень хорошо.Мой список заполнен, как я ожидал.На моем GalaxyTab 10.1 (Android 3.1) параметр pos
при каждом вызове 0
, поэтому у меня есть только один элемент списка.
Кто-нибудь знает, почему ListFragment
вызывает getView
с этимстранные параметры?