【问题标题】:GetListAdapter returning null in AndroidGetListAdapter 在 Android 中返回 null
【发布时间】:2015-01-20 03:41:10
【问题描述】:

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

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

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

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

我的问题在于扩展 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();

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

【问题讨论】:

    标签: android android-listview listactivity


    【解决方案1】:

    问题应该出在您将适配器设置到列表中的方式上。

     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 时可用。

    【讨论】:

    • 天哪!大错特错!非常感谢!它有效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多