【问题标题】:Why this viewholder are null?为什么这个viewholder是空的?
【发布时间】:2021-06-13 07:25:31
【问题描述】:

我使用 ExpandableList 适配器,但我的应用程序被 NullPointerException 迷住了。我想知道是什么导致 viewHolder 设置不正确。

 @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        ViewHolder vh;
        //Set up layout for ExpandableList
        if(groupPosition==0){
            convertView =LayoutInflater.from(context).inflate(R.layout.friends_list_title,null);
        }else{
            if(convertView==null){
                convertView= LayoutInflater.from(context).inflate(R.layout.friends_list_item,null);
                vh = new ViewHolder();
                vh.tv = (TextView) convertView.findViewById(R.id.group_tv);
                convertView.setTag(vh);
            }
            vh = (ViewHolder) convertView.getTag();

            vh.tv.setText(group[groupPosition]);
        }

        return convertView;
    }

2021-03-12 14:17:38.006 8189-8189/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main 进程:com.example.myapplication,PID:8189 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.TextView.setText(java.lang.CharSequence)” 在 com.example.MyExpandableListAdapter.getGroupView(ExpamdListAdapter.java:81) 在 android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:446) 在 android.widget.AbsListView.obtainView(AbsListView.java:2387) 在 android.widget.ListView.makeAndAddView(ListView.java:2067) 在 android.widget.ListView.fillDown(ListView.java:793) 在 android.widget.ListView.fillFromTop(ListView.java:855) 在 android.widget.ListView.layoutChildren(ListView.java:1810) 在 android.widget.AbsListView.onLayout(AbsListView.java:2184) 在 android.view.View.layout(View.java:22844) 在 android.view.ViewGroup.layout(ViewGroup.java:6389) 在 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829) 在 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673) 在 android.widget.LinearLayout.onLayout(LinearLayout.java:1582) 在 android.view.View.layout(View.java:22844) 在 android.view.ViewGroup.layout(ViewGroup.java:6389) 在 android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) 在 android.widget.FrameLayout.onLayout(FrameLayout.java:270) 在 android.view.View.layout(View.java:22844) 在 android.view.ViewGroup.layout(ViewGroup.java:6389) 在 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829) 在 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673) 在 android.widget.LinearLayout.onLayout(LinearLayout.java:1582) 在 android.view.View.layout(View.java:22844) 在 android.view.ViewGroup.layout(ViewGroup.java:6389) 在 android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) 在 android.widget.FrameLayout.onLayout(FrameLayout.java:270) 在 android.view.View.layout(View.java:22844) 在 android.view.ViewGroup.layout(ViewGroup.java:6389) 在 androidx.appcompat.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:530) 在 android.view.View.layout(View.java:22844) 在 android.view.ViewGroup.layout(ViewGroup.java:6389) 在 android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) 在 android.widget.FrameLayout.onLayout(FrameLayout.java:270) 在 android.view.View.layout(View.java:22844) 在 android.view.ViewGroup.layout(ViewGroup.java:6389) 在 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829) 在 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673) 在 android.widget.LinearLayout.onLayout(LinearLayout.java:1582) 在 android.view.View.layout(View.java:22844) 在 android.view.ViewGroup.layout(ViewGroup.java:6389) 在 android.widget.FrameLayout.layoutChildren(FrameLayout.java:332) 在 android.widget.FrameLayout.onLayout(FrameLayout.java:270) 在 com.android.internal.policy.DecorView.onLayout(DecorView.java:784) 在 android.view.View.layout(View.java:22844) 在 android.view.ViewGroup.layout(ViewGroup.java:6389) 在 android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3470) 在 android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2938) 在 android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1952) 在 android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8171) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:972) 在 android.view.Choreographer.doCallbacks(Choreographer.java:796) 在 android.view.Choreographer.doFrame(Choreographer.java:731) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957) 在 android.os.Handler.handleCallback(Handler.java:938) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:223) 在 android.app.ActivityThread.main(ActivityThread.java:7656) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 2021-03-12 14:17:40.138 8189-8189/? I/Process:发送信号。 PID:8189 SIG:9

【问题讨论】:

  • (ViewHolder) convertView.getTag();使用前需要先初始化ViewHolder。
  • 你好,可以发一下friends_list_item.xml文件吗?

标签: java android


【解决方案1】:

您忘记将父级传递给布局充气机。将布局充气器线更改为该线

convertView = LayoutInflater.from(context).inflate(R.layout.item_spinner, parent, false);

【讨论】:

    猜你喜欢
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 2012-11-11
    相关资源
    最近更新 更多