我正在构建一个使用选项卡的活动,该选项卡也可以水平滑动。我还在使用 Actionbar Sherlock (ABS) 来实现 3.0 之前的兼容性。
我在http://code.google.com/p/sherlock-demo/source/browse/#git%2Fsrc%2Fcom%2Fexample%2Fandroid%2Fsherlockdemo上从 Stackoverflow 用户 Sparky 那里找到了一个使用 ABS 的 FragmentTabsPager 的良好实现。
它设置了一个适配器,如下所示:
String[] mAccts; // source data for the list
// populate mAccts with an array of Strings ...
setListAdapter(new ArrayAdapter<String> (getActivity(),
R.layout.simple_list_item_checkable_1,
android.R.id.text1, mAccts));
如果列表项是字符串,这可以正常工作,但我的列表视图项恰好有两个字符串和一个图像。因此,我尝试更改代码以使用我的自定义类,如下所示:
ArrayList<MyItem> mItems = new ArrayList<MyItem>(); // new source data
// populate mItems with an array of MyItems ...
setListAdapter(new MyItemAdapter(getActivity(), R.layout.my_list, mItems));
MyItemAdapter 在哪里
public class MyItemAdapter extends ArrayAdapter<MyItem> { ... }
MyItemAdapter 还包括一个 getView() 函数,用于从 MyItem 中提取正确的字段并扩充 my_list XML。
问题:似乎上述更改应该起作用,但是在示例中调用 setListAdapter() 的类是静态声明的,并且 MyItemAdapter 调用了 getSystemService(),这不是静态的。结果是我得到一个错误:
Cannot make a static reference to the non-static method getSystemService(String)
我尝试使调用函数非静态,但这似乎破坏了示例代码。
任何想法如何解决这一问题?我感谢任何和所有的帮助!