Reputation: 71
I've been googling some on similar questions but I simply can't figure out what's causing my error(I know where the error is but I don't know how to solve it codewise).I know i might get some flak for this but if Someone could help me with a code solution I would be much thankful!
My ExpandableListViewAdapter:
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context context;
private List<String> listDataHeader;
private ArrayList<ArrayList<Question>> listDataChild;
private LayoutInflater inflater;
public ExpandableListAdapter(Context context, List<String> listDataHeader,
ArrayList<ArrayList<Question>> listChildData) {
this.context = context;
this.listDataHeader = listDataHeader;
this.listDataChild = listChildData;
inflater = LayoutInflater.from(context);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return listDataChild.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) {
View view = null;
if (convertView != null)
view = convertView;
else
view = inflater.inflate(R.layout.list_item, parent, false);
Question question = (Question) getChild(groupPosition, childPosition);
TextView txtviewquestion = (TextView) view.findViewById(R.id.question);
if (txtviewquestion != null)
txtviewquestion.setText(question.getQuestion());
//***TITTA NÄRMARE PÅ KNAPPARNA******
//Button btnPositive = (Button)view.findViewById( R.id.BtnPositive );
//btnPositive.setChecked( c.getState() );
//Button btnNegative = (Button)view.findViewById( R.id.BtnNegative );
//btnNegative.setChecked( c.getState() );
return view;
}
@Override
public int getChildrenCount(int groupPosition) {
return listDataChild.get(groupPosition).size();
}
@Override
public Object getGroup(int groupPosition) {
return this.listDataHeader.get(groupPosition);
}
@Override
public int getGroupCount() {
return this.listDataHeader.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
View view = null;
//String headerTitle = (String) getGroup(groupPosition);
if (convertView != null) {
view = convertView;
} else
view = inflater.inflate(R.layout.list_group, parent, false);
String getgroup = (String) getGroup(groupPosition);
TextView questiongroup = (TextView) view.findViewById(R.id.lblListHeader);
if (getgroup != null)
questiongroup.setText(getgroup);
/**
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group, null);
}
TextView lblListHeader = (TextView) convertView
.findViewById(R.id.lblListHeader);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle);
return convertView;
**/
return view;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
public void onGroupCollapsed(int groupPosition) {
}
public void onGroupExpanded(int groupPosition) {
}
}
My ActivityClass:
public class QuestionsActivity2 extends ExpandableListActivity {
private static final String LOG_TAG = "QuestionActivity2";
private ExpandableListAdapter listAdapter;
ExpandableListView expListView;
List<String> listDataHeader;
//HashMap<String, List<String>> listDataChild;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mek_list_layout);
ArrayList<String> groupNames = new ArrayList<String>();
groupNames.add("TÄNK IGENOM UPPDRAGET");
groupNames.add("IDENTIFIERA FAROR I UPPDRAGET");
//*****SE ÖVER OM ARRAYEN SKA VARA AV QUESTION OBJEKT*****
ArrayList<ArrayList<Question>> questions = new ArrayList<ArrayList<Question>>();
ArrayList<Question> question = new ArrayList<Question>();
question.add(new Question("Har jag klart för mig vad uppdraget innebär?", false));
question.add(new Question("Har jag klart för mig hur jag tar mig till arbetsplatsen säkert?", false));
question.add(new Question("Har jag klart för mig vilka arbetsmoment som ingår i uppdraget?", false));
question.add(new Question("Har jag klart för mig vad som behöver brytas och låsas avs el, hydraulik, pneumatik och vatten?", false));
question.add(new Question("Har jag kommunicerat med kontaktman samt berörda operatörer och ledningen?", false));
question.add(new Question("Har jag tillgång till instruktioner och tagit del av de lokala skyddsföreskrifterna?", false));
question.add(new Question("Har jag nödvändiga verktyg och tillstånd för uppdraget?", false));
question.add(new Question("Har jag rätt personlig skyddsutrustning för uppdraget?", false));
question.add(new Question("Behövs avspärring av det aktuella området?", true));
questions.add(question); //<-------Added as solution
question = new ArrayList<Question>();
question.add(new Question("Riskerar jag att snubbla/halka/falla? Check underlag,skyddsräcken, trappor, trappsteg och arbetsplatformar", true));
question.add(new Question("Påkörningsrisk, travers eller truck?", true));
question.add(new Question("Har jag kontrollerat att all strömförsörjning är bruten och låst?", false));
question.add(new Question("Har jag förvissat mig om att all hydraulik, pneumatik eller vattentryck är avlastade samt reglagen brutna och låsta?", false));
question.add(new Question("Ensamarbete i så fall hur kommunicera?", true));
question.add(new Question("Höghöjdsarbete?", true));
question.add(new Question("Förekommer kemikalier/farliga ämnen och föreligger brandrisk?", true));
question.add(new Question("Riskerar jag att påverkas av gas, ångor eller damm?", true));
question.add(new Question("Riskerar jag att tappa eller få fallande föremål på mig?", true));
question.add(new Question("Riskerar jag att bli fastklämd?", true));
question.add(new Question("Riskerar jag att utsättas för buller och vibrationer?", true));
question.add(new Question("Finns risk för elgenomströmning/-ljusbåge?", true));
question.add(new Question("Förekommer tunga manuella lyft under uppdraget?", true));
question.add(new Question("Finns risk för brännskada?", true));
question.add(new Question("Riskerar jag att utsättas för stressmoment under arbetets gång?", true));
questions.add(question); //<-------Added as solution
listAdapter = new ExpandableListAdapter(this, groupNames, questions);
setListAdapter(listAdapter);
}
public void onContentChanged() {
super.onContentChanged();
Log.d(LOG_TAG, "onContentChanged");
}
//****KANSKE NÅGOT FÖR KNAPPARNA? - WORK IN PROGRESS******
public boolean onChildClick(ExpandableListView parent, View view, int groupPosition, int childPosition, long id) {
Log.d(LOG_TAG, "onChildClick: " + childPosition);
return false;
}
}
And the LogCat error:
05-01 22:09:06.215: W/System.err(23939): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0
05-01 22:09:06.215: W/System.err(23939): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
05-01 22:09:06.215: W/System.err(23939): at java.util.ArrayList.get(ArrayList.java:304)
05-01 22:09:06.215: W/System.err(23939): at com.example.ovakoappen.ExpandableListAdapter.getChildrenCount(ExpandableListAdapter.java:69)
05-01 22:09:06.215: W/System.err(23939): at android.widget.ExpandableListConnector.refreshExpGroupMetadataList(ExpandableListConnector.java:567)
05-01 22:09:06.215: W/System.err(23939): at android.widget.ExpandableListConnector.expandGroup(ExpandableListConnector.java:698)
05-01 22:09:06.215: W/System.err(23939): at android.widget.ExpandableListView.handleItemClick(ExpandableListView.java:569)
05-01 22:09:06.215: W/System.err(23939): at android.widget.ExpandableListView.performItemClick(ExpandableListView.java:522)
05-01 22:09:06.215: W/System.err(23939): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3328)
05-01 22:09:06.215: W/System.err(23939): at android.widget.AbsListView.onTouchEvent(AbsListView.java:4565)
05-01 22:09:06.215: W/System.err(23939): at android.view.View.dispatchTouchEvent(View.java:7500)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2285)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2013)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2291)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2028)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2291)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2028)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2291)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2028)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2291)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2028)
05-01 22:09:06.225: W/System.err(23939): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2240)
05-01 22:09:06.225: W/System.err(23939): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1535)
05-01 22:09:06.225: W/System.err(23939): at android.app.Activity.dispatchTouchEvent(Activity.java:2466)
05-01 22:09:06.225: W/System.err(23939): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2188)
05-01 22:09:06.225: W/System.err(23939): at android.view.View.dispatchPointerEvent(View.java:7689)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3794)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3678)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4916)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4895)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4993)
05-01 22:09:06.225: W/System.err(23939): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
05-01 22:09:06.225: W/System.err(23939): at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
05-01 22:09:06.225: W/System.err(23939): at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:174)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:4966)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:5012)
05-01 22:09:06.225: W/System.err(23939): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)
05-01 22:09:06.225: W/System.err(23939): at android.view.Choreographer.doCallbacks(Choreographer.java:591)
05-01 22:09:06.225: W/System.err(23939): at android.view.Choreographer.doFrame(Choreographer.java:559)
05-01 22:09:06.225: W/System.err(23939): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
05-01 22:09:06.225: W/System.err(23939): at android.os.Handler.handleCallback(Handler.java:725)
05-01 22:09:06.225: W/System.err(23939): at android.os.Handler.dispatchMessage(Handler.java:92)
05-01 22:09:06.225: W/System.err(23939): at android.os.Looper.loop(Looper.java:137)
05-01 22:09:06.235: W/System.err(23939): at android.app.ActivityThread.main(ActivityThread.java:5279)
05-01 22:09:06.235: W/System.err(23939): at java.lang.reflect.Method.invokeNative(Native Method)
05-01 22:09:06.235: W/System.err(23939): at java.lang.reflect.Method.invoke(Method.java:511)
05-01 22:09:06.235: W/System.err(23939): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
05-01 22:09:06.235: W/System.err(23939): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
05-01 22:09:06.235: W/System.err(23939): at dalvik.system.NativeStart.main(Native Method)
Upvotes: 0
Views: 831
Reputation: 1032
You never add anything to the questions ArrayList that you have created.
so when you call
listAdapter = new ExpandableListAdapter (this, groupNames, questions);
you use the empty list. You should add your question Arraylist to the questions before you create a new one.
Upvotes: 1