如何在创建列表时删除异常?

时间:2014-10-29 11:27:20

标签: java android

10-29 16:49:12.826: E/AndroidRuntime(653): FATAL EXCEPTION: main
10-29 16:49:12.826: E/AndroidRuntime(653): java.lang.NullPointerException
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.widget.AbsListView.obtainView(AbsListView.java:1432)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1216)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.widget.ListView.onMeasure(ListView.java:1127)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.view.View.measure(View.java:8313)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.widget.RelativeLayout.measureChild(RelativeLayout.java:566)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:381)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.view.View.measure(View.java:8313)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.view.View.measure(View.java:8313)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.view.View.measure(View.java:8313)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.view.View.measure(View.java:8313)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.view.ViewRoot.performTraversals(ViewRoot.java:839)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.os.Looper.loop(Looper.java:123)
10-29 16:49:12.826: E/AndroidRuntime(653):  at android.app.ActivityThread.main(ActivityThread.java:3683)
10-29 16:49:12.826: E/AndroidRuntime(653):  at java.lang.reflect.Method.invokeNative(Native Method)
10-29 16:49:12.826: E/AndroidRuntime(653):  at java.lang.reflect.Method.invoke(Method.java:507)
10-29 16:49:12.826: E/AndroidRuntime(653):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-29 16:49:12.826: E/AndroidRuntime(653):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-29 16:49:12.826: E/AndroidRuntime(653):  at dalvik.system.NativeStart.main(Native Method)

您好 我正在尝试创建ExpendableList,但在我之间我得到这个例外,我试着这样我不知道我错在哪里?

Parent 1
parent 2
  child1
  child2
  child3
parent 3
parent 4
  child1

所以我尝试这样做一个xml route_dashboard.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ExpandableListView
        android:id="@+id/expandableListView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
   >
    </ExpandableListView>

</RelativeLayout>

自定义适配器

public class CustomExpendableListView extends BaseExpandableListAdapter {
    private String[] fatherName={"naveen","ravi","sharma","uncle","rahat"};
    String[] raviChildrenname={"abc","pqr","mnn"};
    String[] sharmaChildrenname={"zxa","yh","er"};
    Context context;
    public CustomExpendableListView(Context context) {
        this.context=context;
    }

    @Override
    public int getGroupCount() {
        return fatherName.length;
    }

    @Override
    public int getChildrenCount(int groupPosition) {
          if (fatherName[groupPosition].equalsIgnoreCase("ravi")) {
                return raviChildrenname.length;
        }

        if (fatherName[groupPosition].equalsIgnoreCase("sharma")) {
                return sharmaChildrenname.length;
        }

        return 0;
    }

    @Override
    public Object getGroup(int groupPosition) {
        return null;
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return null;
    }

    @Override
    public long getGroupId(int groupPosition) {
        return 0;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return 0;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
            View convertView, ViewGroup parent) {
        /*  LayoutInflater mInflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.parenttextview, null);
        }
        TextView item = (TextView) convertView.findViewById(R.id.parentTextView);
        item.setText(fatherName[groupPosition]);*/
        return null;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {
         LayoutInflater mInflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.child_row, null);
        }
        TextView item = (TextView) convertView.findViewById(R.id.childTextView);

         if (fatherName[groupPosition].equalsIgnoreCase("ravi")) {
                item.setText(raviChildrenname[childPosition]);
        }

        if (fatherName[groupPosition].equalsIgnoreCase("sharma")) {
                item.setText( sharmaChildrenname[childPosition]);
        }

        return item;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        // TODO Auto-generated method stub
        return false;
    }

}

child.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/childTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

parenttextviewxml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/parentTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

private String[] fatherName={"naveen","ravi","sharma","uncle","rahat"};
        String[] raviChildrenname={"abc","pqr","mnn"};
        String[] sharmaChildrenname={"zxa","yh","er"};

fatherName 是父节点。 raviChildrenname 是ravi父节点的子节点.sharmaChildrenname是sharma的子节点

2 个答案:

答案 0 :(得分:0)

您正在从适配器null返回getGroupView()

适配器getView()应始终返回非空View

答案 1 :(得分:0)

你的getchild为null试试这个并为getgroupview做同样的事情

@Override
public Object getChild(int groupPosition, int childPosition) {
    return theChildArray[childPosition];
}
@Override
public Object getGroup(int groupPosition) {
    return theParentArray[groupPosition];
}