GetListAdapter在Android中返回null

时间:2015-01-19 19:35:34

标签: android android-listview listactivity

我有一个扩展ListActivity的活动。在我的onCreate方法中,我执行以下操作:

        ListView listView = (ListView) findViewById(android.R.id.list);
        listView.setAdapter(new InteractiveArrayAdapter(this, model));

我为在xml布局中定义的listview小部件设置了一个自定义适配器。

我的自定义适配器InterativeArrayAdapter扩展了ArrayAdapter。 Model是我为管理listview项目数据而构建的一个类。

我的问题在于扩展ListActivity的活动:当我处理按钮时,我执行以下操作:

    public void onClickCompareButton(View view) {
    InteractiveArrayAdapter adapter;
    Set<Integer> checkedItems;
    Iterator<Integer> it;
    Model element;

    adapter = (InteractiveArrayAdapter) getListAdapter();
    checkedItems = adapter.getCheckedItems();
    it = checkedItems.iterator();

    int size = checkedItems.size();
    for (int i = 0; i < size; i++) {
        element = adapter.getItem(it.next());
        // TODO
    }
}

问题在于演员:

adapter = (InteractiveArrayAdapter) getListAdapter();

适配器获取空值,因此下一行崩溃:

checkedItems = adapter.getCheckedItems();

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:2)

问题应该在于将适配器设置为列表的方式。

 ListView listView = (ListView) findViewById(android.R.id.list);
 listView.setAdapter(new InteractiveArrayAdapter(this, model));

由于您扩展了ListActivity,因此ListView默认情况下应该可用于您的Activity。所以你应该试试这个,

setListAdapter(new InteractiveArrayAdapter(this, model));

setListAdapter(adapterObj) - 在扩展ListActivity时可用。