【问题标题】:Exception on calling getAdapter()调用 getAdapter() 时出现异常
【发布时间】:2013-10-02 21:11:20
【问题描述】:

LinkAdapter 是一个扩展 ArrayAdapter 的类。

private static List<LinkData> linkDataList = new ArrayList<LinkData>();
private LinkAdapter la;
la = new LinkAdapter(someLinkDataitmes, getActivity()); 
ListView lv = (ListView) v.findViewById(R.id.urls);
lv.setAdapter(la);


public class LinkData {
    private String name, image, description;

    public LinkData(String name, String image, String description){
        this.name = name;
        this.image=image;
        this.description=description;
        }
}

现在我想稍后更新我的listview

ListView lv = (ListView) v.findViewById(R.id.urls);
LinkAdapter mListAdapter = ((LinkAdapter)lv.getAdapter()); // this line is giving an error.
mListAdapter.add(new LinkData(name_val, image_val, description_val));
mListAdapter.notifyDataSetChanged();

但代码不起作用(给NullPointerException

在互联网上搜索了很多,但找不到我的问题的具体答案。

【问题讨论】:

  • 发布异常的Logcat。
  • 为什么不使用最初设置适配器时分配的“la”字段?
  • 请发布更多代码。您当前的代码甚至无法编译。将第一块代码放入方法中,然后发布 logcat。
  • @dymmeh la 在不同的类中定义。有没有办法让我做到这一点。
  • @Prmths 当我尝试执行此操作后,我的应用程序严重冻结,因此我无法捕获 logcat 的输出。

标签: android android-arrayadapter listadapter


【解决方案1】:

据我所知,您从未将适配器添加到您的 ListView。 Adapter 默认情况下不会嵌入到您的 ListView 中,因此您需要创建并添加它。

如果你这样做了 mListAdapter.setAdapter(YOUR_ARRAY_ADAPTER_GOES_HERE);在您尝试恢复它之前,它应该可以正常工作。

NPE 是因为您无法对从未存在的事物的引用执行“获取”。

【讨论】:

  • lv.setAdapter(la);我猜第 5 行可以完成这项工作?
【解决方案2】:

我知道这是一篇旧帖子,但我遇到了同样的问题,我通过调试看到 ListView 上的 getAdapter() 方法返回一个 ListAdapter,它可以转换为 HeaderViewListAdapter。然后在该适配器上,可以调用 getWrappedAdapter() 方法并将结果投射到您的 CustomAdapter 上。

编辑! 我需要在将其插入数据库后在列表中添加一个新项目。 我在 Activity 上创建了一个将我的 Item 插入列表的方法。

private void addItem(Item item) {
  ListView lstView = (ListView) findViewById(R.id.myCustomListView);
  HeaderViewListAdapter adapter = (HeaderViewListAdapter) lstView.getAdapter();

  MyCustomAdapter customAdapter = (MyCustomAdapter) adapter.getWrappedAdapter();

  customAdapter.add(item);
  customAdapter.notifyDataSetChanged();
}

我在将 Item 插入数据库后调用此方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多