BaseExpandableListAdapter RuntimeError NullPointerException

I am trying to view data from a database in an ExpandableListView (I am first trying to get it to work with hard-coded strings).

I used the following example: CodeWiki ExpandableListView

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

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

 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

  <?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:

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): in 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.javahaps138) 03-17 15: 16: 13.468: E / AndroidRuntime (370 ): on android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1017) 03-17 15: 16: 13.468: E / AndroidRuntime (370): at android.widget.LinearLayout.measureVertical (LinearLayout.javahaps86) 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.javahaps138) 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∗31) 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 data138) 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.javahaps683) 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): in 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∗97) 03- 17 15: 16: 13.468: E / AndroidRuntime (370): in dalvik.system.NativeStart.main (native method)

I don’t know why I am getting this error by looking at an example, I just changed the xml values ​​from px to dp.

+1
source share
1 answer

I think the problem lies in the class "MyExpandableListAdapter" in line number 64. Here it seems that at some point some variable becomes zero. Can you insert the code in line number 64 in this class. So that I can help you more.

+1
source

Source: https://habr.com/ru/post/1401991/


All Articles