BaseExpandableListAdapter RuntimeError NullPointerException异常 [英] BaseExpandableListAdapter RuntimeError NullPointerException

查看:178
本文介绍了BaseExpandableListAdapter RuntimeError NullPointerException异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在ExpandableListView查看数据库中的数据(我第一次试图把它硬codeD字符串处理)。

I'm trying to view data from a database in an ExpandableListView (I'm first trying to get it working with hard coded Strings).

我用下面的例子: codeWiki ExpandableListView

但是,当我在一组点击获取childView我得到一个运行时错误。

But I get a Runtime error when I click on a group to get the childView.

Categories1.java

Categories1.java

public class CategoriesActivity1 extends Activity

{

ExpandableListView eListView;
ExpandableListAdapter eListAdapter;

ArrayList<String> groups;
ArrayList<ArrayList<ArrayList<String>>> children;

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.categories);

        eListView = (ExpandableListView)findViewById(R.id.expandableListView1);

        loadData();

        MyExpandableListAdapter adapter = new MyExpandableListAdapter(this, groups, children);

        eListView.setAdapter(adapter);


 }



 private void loadData(){

        groups= new ArrayList<String>();
        children= new ArrayList<ArrayList<ArrayList<String>>>();

        groups.add("Group 1");
        groups.add("Group 2");
        groups.add("Group 3");

        children.add(new ArrayList<ArrayList<String>>());
        children.get(0).add(new ArrayList<String>());
        children.get(0).get(0).add("Child 1 group 1");
        children.get(0).add(new ArrayList<String>());
        children.get(0).get(1).add("Child 2 group 1");
        children.get(0).add(new ArrayList<String>());
        children.get(0).get(2).add("Child 3 group 1");

        children.add(new ArrayList<ArrayList<String>>());
        children.get(1).add(new ArrayList<String>());
        children.get(1).get(0).add("Child 1 group 2");
        children.get(1).add(new ArrayList<String>());
        children.get(1).get(1).add("Child 2 group 2");
        children.get(1).add(new ArrayList<String>());
        children.get(1).get(2).add("Child 3 group 2");

        children.add(new ArrayList<ArrayList<String>>());
        children.get(2).add(new ArrayList<String>());
        children.get(2).get(0).add("Child 1 group 3");
        children.get(2).add(new ArrayList<String>());
        children.get(2).get(1).add("Child 2 group 3");
        children.get(2).add(new ArrayList<String>());
        children.get(2).get(2).add("Child 3 group 3");
    }

}

MyExpandableListAdapter.java

MyExpandableListAdapter.java

public class MyExpandableListAdapter extends BaseExpandableListAdapter

{

private ArrayList<String> groups;
    private ArrayList<ArrayList<ArrayList<String>>> children;
    private Context context;

public MyExpandableListAdapter(Context context, ArrayList<String> groups, ArrayList<ArrayList<ArrayList<String>>> children)
{
    this.context = context;
    this.groups = groups;
    this.children = children;
}

@Override
public boolean areAllItemsEnabled()
{
    return true;
}

@Override
public ArrayList<String> getChild(int groupPosition, int childPosition)
{
    return children.get(groupPosition).get(childPosition);
}

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

@Override
public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent)
{
    String child = (String) ((ArrayList<String>)getChild(groupPosition, childPosition)).get(0);

    if(convertView == null)
    {
        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = layoutInflater.inflate(R.layout.categories_group, null);
    }

    TextView childTxt = (TextView)convertView.findViewById(R.id.TextViewChild01);

    childTxt.setText(child);

    return convertView;
}

@Override
public int getChildrenCount(int groupPosition)
{
    return children.get(groupPosition).size();
}

@Override
public Object getGroup(int groupPosition)
{
    return groups.get(groupPosition);
}

@Override
public int getGroupCount()
{
    return groups.size();
}

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

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent)
{
    String group = (String) getGroup(groupPosition);

    if(convertView == null)
    {
        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = layoutInflater.inflate(R.layout.categories_group, null);
    }

    TextView groupTxt = (TextView) convertView.findViewById(R.id.TextViewGroup);

    groupTxt.setText(group);


    return convertView;
}

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

@Override
public boolean isChildSelectable(int groupPosition, int childPosition)
{
    return true;
}

}

categories_group.xml

categories_group.xml

     <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/categoriesLLayout2"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/TextViewGroup" 
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_marginLeft="50dp"
        android:gravity="center_vertical"
    >
    </TextView>
    <TextView
        android:id="@+id/TextViewChild01" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
    >
    </TextView>
</LinearLayout>

logcat的:

Logcat:

15 03-17:16:13.468:E / AndroidRuntime(370):致命异常:主要
  03-17 15:16:13.468:E / AndroidRuntime(370):显示java.lang.NullPointerException
  03-17 15:16:13.468:E / AndroidRuntime(370):在nl.test.listing.activity.MyExpandableListAdapter.getChildView(MyExpandableListAdapter.java:64)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:450)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.widget.AbsListView.obtainView(AbsListView.java:1430)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.widget.ListView.measureHeightOfChildren(ListView.java:1216)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.widget.ListView.onMeasure(ListView.java:1127)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.view.View.measure(View.java:8313)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.view.View.measure(View.java:8313)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.view.View.measure(View.java:8313)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.view.View.measure(View.java:8313)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.view.View.measure(View.java:8313)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.view.ViewRoot.performTraversals(ViewRoot.java:839)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.os.Handler.dispatchMessage(Handler.java:99)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.os.Looper.loop(Looper.java:123)
  03-17 15:16:13.468:E / AndroidRuntime(370):在android.app.ActivityThread.main(ActivityThread.java:3683)
  03-17 15:16:13.468:E / AndroidRuntime(370):在java.lang.reflect.Method.invokeNative(本机方法)
  03-17 15:16:13.468:E / AndroidRuntime(370):在java.lang.reflect.Method.invoke(Method.java:507)
  03-17 15:16:13.468:E / AndroidRuntime(370):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
  03-17 15:16:13.468:E / AndroidRuntime(370):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
  03-17 15:16:13.468:E / AndroidRuntime(370):在dalvik.system.NativeStart.main(本机方法)

03-17 15:16:13.468: E/AndroidRuntime(370): FATAL EXCEPTION: main 03-17 15:16:13.468: E/AndroidRuntime(370): java.lang.NullPointerException 03-17 15:16:13.468: E/AndroidRuntime(370): at nl.test.listing.activity.MyExpandableListAdapter.getChildView(MyExpandableListAdapter.java:64) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:450) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.widget.AbsListView.obtainView(AbsListView.java:1430) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.widget.ListView.measureHeightOfChildren(ListView.java:1216) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.widget.ListView.onMeasure(ListView.java:1127) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.view.View.measure(View.java:8313) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.view.View.measure(View.java:8313) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.view.View.measure(View.java:8313) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.view.View.measure(View.java:8313) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.view.View.measure(View.java:8313) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.view.ViewRoot.performTraversals(ViewRoot.java:839) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.os.Handler.dispatchMessage(Handler.java:99) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.os.Looper.loop(Looper.java:123) 03-17 15:16:13.468: E/AndroidRuntime(370): at android.app.ActivityThread.main(ActivityThread.java:3683) 03-17 15:16:13.468: E/AndroidRuntime(370): at java.lang.reflect.Method.invokeNative(Native Method) 03-17 15:16:13.468: E/AndroidRuntime(370): at java.lang.reflect.Method.invoke(Method.java:507) 03-17 15:16:13.468: E/AndroidRuntime(370): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 03-17 15:16:13.468: E/AndroidRuntime(370): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 03-17 15:16:13.468: E/AndroidRuntime(370): at dalvik.system.NativeStart.main(Native Method)

我不知道为什么我得到这个错误,看着例子中,我不仅改变了XML值从PX到DP。

I don't know why I get this error, looking at the example I only changed the xml values from px to dp.

推荐答案

我认为这个问题是在班MyExpandableListAdapter的行号64。这似乎有一些变化正在成为空的那一刻。你可以粘贴在行号64 code在这个类。所以,我可以帮助你。

I think the problem is at class "MyExpandableListAdapter" at line number 64. Here it seems that there is some variable is becoming null at that moment. Can you paste the code at line number 64 in this class. SO that i can assist you more.

这篇关于BaseExpandableListAdapter RuntimeError NullPointerException异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆