Expandable list Adapter keeps crashing Activity-Collection of common programming errors
Forgive me for what might be the noobiest of issues, but I don’t know what’s causing my app to crash (this time). I’m simply trying to inflate an xml layout file into expandable list view.
package com.anthonyce.mcathomie;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;
public class PlayoptionsActivity extends Activity {
ExpandableListView Mtopics;
ExpandableAdapter MtopicsAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_playoptions);
//set up adapter
MtopicsAdapter = new ExpandableAdapter();
Mtopics = (ExpandableListView) findViewById(R.id.mtopicsListView);
Mtopics.setAdapter(MtopicsAdapter);
//Mtopics.setGroupIndicator(null);
}
public class ExpandableAdapter extends BaseExpandableListAdapter {
private Context context;
private String[] groups = { "People Names", "Dog Names", "Cat Names",
"Fish Names" };
private String[][] children = { { "Arnold" }, { "Ace" }, { "Fluffy" },
{ "Goldy" } };
public Object getChild(int groupPosition, int childPosition) {
return children[groupPosition][childPosition];
}
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
View childView;
LayoutInflater childInflate = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
childView = childInflate.inflate(R.layout.mtopics_childrow, parent, false);
TextView childtxt = (TextView)childView.findViewById(R.id.mtopicchildtext);
childtxt.setText(getChild(groupPosition, childPosition).toString());
return childView;
}
public int getChildrenCount(int groupPosition) {
return children[groupPosition].length;
}
public Object getGroup(int groupPosition) {
return groups[groupPosition];
}
public int getGroupCount() {
return groups.length;
}
public long getGroupId(int groupPosition) {
return groupPosition;
}
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
View groupView;
groupView = new View(context);
LayoutInflater groupInflate = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
groupView = groupInflate.inflate(R.layout.mtopics_grouprow, parent, false);
TextView grouptxt = (TextView)groupView.findViewById(R.id.mtopicgrouptext);
grouptxt.setText(getGroup(groupPosition).toString());
return groupView;
}
public boolean hasStableIds() {
return true;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
}
And here is an xml of the group layout that i’m trying to inflate
Before it was working but no text was showing and now with this code it just crashes. I don’t think the issue would be in the childrow, but here goes
And here is the logCat that I’m finding indecipherable
09-05 17:09:33.919: E/AndroidRuntime(429): FATAL EXCEPTION: main
09-05 17:09:33.919: E/AndroidRuntime(429): java.lang.NullPointerException
09-05 17:09:33.919: E/AndroidRuntime(429): at android.view.ViewConfiguration.get(ViewConfiguration.java:228)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.view.View.(View.java:1878)
09-05 17:09:33.919: E/AndroidRuntime(429): at com.anthonyce.mcathomie.PlayoptionsActivity$ExpandableAdapter.getGroupView(PlayoptionsActivity.java:118)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:445)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.widget.AbsListView.obtainView(AbsListView.java:1430)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.widget.ListView.measureHeightOfChildren(ListView.java:1216)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.widget.ListView.onMeasure(ListView.java:1127)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.view.View.measure(View.java:8313)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.view.View.measure(View.java:8313)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.view.View.measure(View.java:8313)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.view.View.measure(View.java:8313)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.view.View.measure(View.java:8313)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.view.ViewRoot.performTraversals(ViewRoot.java:839)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.os.Handler.dispatchMessage(Handler.java:99)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.os.Looper.loop(Looper.java:123)
09-05 17:09:33.919: E/AndroidRuntime(429): at android.app.ActivityThread.main(ActivityThread.java:3683)
09-05 17:09:33.919: E/AndroidRuntime(429): at java.lang.reflect.Method.invokeNative(Native Method)
09-05 17:09:33.919: E/AndroidRuntime(429): at java.lang.reflect.Method.invoke(Method.java:507)
09-05 17:09:33.919: E/AndroidRuntime(429): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-05 17:09:33.919: E/AndroidRuntime(429): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-05 17:09:33.919: E/AndroidRuntime(429): at dalvik.system.NativeStart.main(Native Method)