ExpandbleListView in einer ExpandbleListView

  • Antworten:3
Yoshi
  • Forum-Beiträge: 16

19.06.2013, 13:21:48 via Website

Also wie der titel sagt, will ich eine ExpandbleListView als ChildLayout für meine andere ExpandbleListView .

Ich habe das erstmal so probiert mit einer ExpandbleListView und mit setAdapter(); hat auch alles funktioniert.
Ich habe mir einen eigenen Adapter geschreiben, der als GroupView eine Texview hat (reicht ja auch zum anzeigen der Kategorien) und als als ChildView ein Layout hat mit einer ImageView und 2 Textviews.

Das war alles kein Problem.

Jetzt will ich allerdings als ChildView eine ExpandbleListView returnen (die hat auch ihren eigenen Adapter), so dass ich das doppelt geschachtelt habe.
Das geht auch fast. Und zwar kann ich die obreste Ebene aufklappen dann kommt die 2te ExpandbleListView die ich auch aufklappen kann allerdings sind da keine ChildViews drin, bzw Android ruft da irgendwas nicht auf oder so.

Jetzt zur eigentlichen Frage. Geht das überhaupt? Hat das schon jemand gemacht? Oder bringe ich Android an die Grenzen?

Code wird bei bedarf nachgereicht.

vielen Dank schonmal vorab

Antworten
Yoshi
  • Forum-Beiträge: 16

19.06.2013, 14:16:11 via Website

Hier wird eine ArrayList erstellt für den Adapter
1private ArrayList<Term> fillExpandableList() {
2
3 File file = getExternalFilesDir(null);
4
5 terms = new ArrayList<Term>();
6 if (file.listFiles() != null) {
7 for (File term : file.listFiles()) {
8
9 ArrayList<Course> courses = new ArrayList<Course>();
10 if (term.listFiles() != null) {
11 for (File course : term.listFiles()) {
12
13 ArrayList<Lecture> lectures = new ArrayList<Lecture>();
14 if (course.listFiles() != null) {
15 for (File lecture : course.listFiles()) {
16 lectures.add(new Lecture(lecture.getName()));
17
18 }
19 courses.add(new Course(course.getName(), lectures));
20 }
21 }
22 }
23 terms.add(new Term(term.getName(), courses));
24 }
25 }
26
27 return terms;
28 }


hier ist die getChild Methode von dem "Top-Level" Adapter
1@Override
2 public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
3
4 Course course = getChild(groupPosition, childPosition);
5 LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
6 View view = inflater.inflate(R.layout.component_activity_course, null);
7
8 Term term = getGroup(groupPosition);
9
10 ExpandableListView expandableListView = (ExpandableListView) view.findViewById(R.id.expandableListViewCourse);
11 expandableListView.setAdapter(new ExpandableAdapterCourses(context, terms, term.getCourses()));
12
13 TextView textViewName = new TextView(context);
14 textViewName.setText(course.getName());
15
16 return view;
17 }
und hier die getGroup von dem zweiten Adapter
1public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
2 Course course = getGroup(groupPosition);
3
4 TextView textView = new TextView(context);
5 textView.setText(course.getName());
6 return textView;
7 }

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

19.06.2013, 14:52:33 via Website

Das Problem ist eher das du einen ScrollContainer in einem ScrollContainer packst, das ist per se schlecht für den User.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Yoshi
  • Forum-Beiträge: 16

19.06.2013, 15:27:24 via Website

Hm ja da hast du natürlcih auch recht. Dann muss ich meinen Ansatz ändern? oder ist es trotzdem möglich sowas umzusetzten?

Antworten