带有兼容性api的蜂窝ListFragment中的ListAdapter

时间:2011-10-23 15:12:21

标签: android android-3.0-honeycomb listadapter

我正在使用兼容性API在Android Gingerbread和蜂窝设备上提供我的应用。 我构建了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;
}

在姜饼设备(三星Galaxy S2)上,这非常好用。我的列表按照我的预期填充。在我的GalaxyTab 10.1(Android 3.1)上,参数pos在每个调用0中,所以我只有一个列表项。

有没有人知道为什么ListFragment会使用这个奇怪的参数调用getView

1 个答案:

答案 0 :(得分:0)

您是否尝试过不将Activity转换为BaseActivity? 如果您使用getActivity()会发生什么。

您在Fragment生命周期的哪个部分设置了适配器?

祝福, 添