java - android AbsListView 空指针异常

标签 java android android-listview nullpointerexception

我在 AbsListView 中遇到 NullPointerException 问题

  java.lang.NullPointerException
        at android.widget.AbsListView.obtainView(AbsListView.java:2161)
        at android.widget.ListView.makeAndAddView(ListView.java:1831)
        at android.widget.ListView.fillDown(ListView.java:674)
        at android.widget.ListView.fillFromTop(ListView.java:735)
        at android.widget.ListView.layoutChildren(ListView.java:1638)
        at android.widget.AbsListView.onLayout(AbsListView.java:1994)
        at android.view.View.layout(View.java:14008)
        at android.view.ViewGroup.layout(ViewGroup.java:4373)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
        at android.view.View.layout(View.java:14008)
        at android.view.ViewGroup.layout(ViewGroup.java:4373)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
        at android.view.View.layout(View.java:14008)
        at android.view.ViewGroup.layout(ViewGroup.java:4373)
        at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1585)
        at android.view.View.layout(View.java:14008)
        at android.view.ViewGroup.layout(ViewGroup.java:4373)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
        at android.view.View.layout(View.java:14008)
        at android.view.ViewGroup.layout(ViewGroup.java:4373)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
        at android.view.View.layout(View.java:14008)
        at android.view.ViewGroup.layout(ViewGroup.java:4373)
        at android.support.v4.widget.SlidingPaneLayout.onLayout(SlidingPaneLayout.java:651)
        at android.view.View.layout(View.java:14008)
        at android.view.ViewGroup.layout(ViewGroup.java:4373)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
        at android.view.View.layout(View.java:14008)
        at android.view.ViewGroup.layout(ViewGroup.java:4373)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
        at android.view.View.layout(View.java:14008)
        at android.view.ViewGroup.layout(ViewGroup.java:4373)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
        at android.view.View.layout(View.java:14008)
        at android.view.ViewGroup.layout(ViewGroup.java:4373)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1892)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1711)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
        at android.view.Choreographer.doCallbacks(Choreographer.java:562)
        at android.view.Choreographer.doFrame(Choreographer.java:532)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
        at android.os.Handler.handleCallback(Handler.java:725)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5041)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
        at dalvik.system.NativeStart.main(Native Method)

这是来自 AbsListView.java 的代码

2159    child = mAdapter.getView(position, null, this);
2160
2161    if (child.getImportantForAccessibility() == IMPORTANT_FOR_ACCESSIBILITY_AUTO) {
2162        child.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES);
2163    }

所以 getView 返回 null,但是没有从我的应用程序的代码位置调用它的踪迹。有什么帮助吗?

最佳答案

我有完全相同的错误行并找到了你的问题。正如评论中所建议的,您可能从这个 mAdapter.getView(position, null, this);

返回 null

您可以像下面那样构造您的 getView 方法:

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        MyCustomView = null;
         // The view here is not built yet
        if (convertView == null) {
            v = new MyCustomView(ctx); // build some view here.
        } // the view can be retrieved
        else {
            v = (MyCustomView) convertView;
        }

        return v;
    }

希望对你有帮助

关于java - android AbsListView 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21904938/

相关文章:

Java无法正确读取 "&&"语句?

java - 写入文件的特定位置

java - JsonArray 嵌套对象 -> Gson

java - 更好的性能,SQLite 查询与内存中的 ArrayList<Object>

android - 在android中为ListView中的每一行制作动态布局

java - java中使用Scrollbar改变颜色

keystore 的 Android Studio 备份

android - AlarmManager - 如何在每个小时的顶部重复一个警报?

android - 创建像 Instagram 或 FB 这样的墙

android - 禁用 ListView 中的项目