Philip M.
- Forum-Beiträge: 90
06.10.2011, 14:22:01 via Website
06.10.2011 14:22:01 via Website
Guten Tag an alle,
der Titel ist leider etwas unglücklich gewählt, aber mir viel grade nichts besseres ein. Die Sache ist nun die....
Ich habe einen ExpandableListView welcher ganz gewhnlich mit Daten befüllt wird über einen "SimpleExpandableListAdapter", welchen ich ein wenig erweitert habe, damit der in den Child-Elementen vorhandene WebView gefüllt wird.
Das ganze funktioniert auch echt Prima und macht keine Probleme. Die Probleme kommen erst, wenn der ExpandableListView mit seinen Ober-Elementen (Childs nicht mitgezählt) größer ist als der Bildschirm und dadurch einen Scrollbalken erhält. Nun kann ich zwar jeden Menü-Punkt den ich will expandieren lassen und dann auch durch scrollen, allerdings funktioniert dies nur mit dem letzten Element nicht. Wenn ich das letzte Element expandieren will, scheint es dies wohl auch zu machen, allerdings kann ich nicht weiter runterscrollen um nach zu schauen.
Weiß jemand wodran dies liegen könnte? Ich versuch mal ein bisschen Quellcode zu posten welcher vielleicht aufschluss geben könnte.
Liegt es vielleicht an dem verwendeten WebView? Danke für eure Mühe (:
[code]
private List<HashMap<String, String>> createGroupList(Object array[], String key) {
ArrayList<HashMap<String, String>> result = new ArrayList<HashMap<String, String>>();
for( int i = 0 ; i < array.length ; ++i ) {
HashMap<String, String> m = new HashMap<String, String>();
m.put( key, array[i].toString() );
result.add(m);
}
return (List<HashMap<String, String>>)result;
}
private List<ArrayList<HashMap<String, Object>>> createChildList(Object array[], String key) {
ArrayList<ArrayList<HashMap<String, Object>>> result = new ArrayList<ArrayList<HashMap<String, Object>>>();
for( int i = 0 ; i < array.length ; ++i ) {
ArrayList<HashMap<String, Object>> secList = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> child = new HashMap<String, Object>();
child.put( key, array[i] );
secList.add(child);
result.add(secList);
}
return result;
}
private ExpandableListView getExpandableListView() {
if(listView == null) {
listView = (ExpandableListView)findViewById(R.id.hilfeListView);
SimpleExpandableListAdapter adapter = new ExpandableListViewAdapter(
this,
createGroupList(getResources().getStringArray(R.array.hilfeArray), "helpMenuPoint"),
R.layout.expandable_list_adapter_group,
new String[] { "helpMenuPoint"},
new int[] { R.id.GroupName },
createChildList(getResources().getStringArray(R.array.hilfeTextArray), "helpText"),
R.layout.expandable_list_adapter_child,
new String[] { "helpText"},
new int[] { R.id.expandableWebView }
);
listView.setAdapter(adapter);
}
return listView;
}
[/code]
der Titel ist leider etwas unglücklich gewählt, aber mir viel grade nichts besseres ein. Die Sache ist nun die....
Ich habe einen ExpandableListView welcher ganz gewhnlich mit Daten befüllt wird über einen "SimpleExpandableListAdapter", welchen ich ein wenig erweitert habe, damit der in den Child-Elementen vorhandene WebView gefüllt wird.
Das ganze funktioniert auch echt Prima und macht keine Probleme. Die Probleme kommen erst, wenn der ExpandableListView mit seinen Ober-Elementen (Childs nicht mitgezählt) größer ist als der Bildschirm und dadurch einen Scrollbalken erhält. Nun kann ich zwar jeden Menü-Punkt den ich will expandieren lassen und dann auch durch scrollen, allerdings funktioniert dies nur mit dem letzten Element nicht. Wenn ich das letzte Element expandieren will, scheint es dies wohl auch zu machen, allerdings kann ich nicht weiter runterscrollen um nach zu schauen.
Weiß jemand wodran dies liegen könnte? Ich versuch mal ein bisschen Quellcode zu posten welcher vielleicht aufschluss geben könnte.
Liegt es vielleicht an dem verwendeten WebView? Danke für eure Mühe (:
[code]
private List<HashMap<String, String>> createGroupList(Object array[], String key) {
ArrayList<HashMap<String, String>> result = new ArrayList<HashMap<String, String>>();
for( int i = 0 ; i < array.length ; ++i ) {
HashMap<String, String> m = new HashMap<String, String>();
m.put( key, array[i].toString() );
result.add(m);
}
return (List<HashMap<String, String>>)result;
}
private List<ArrayList<HashMap<String, Object>>> createChildList(Object array[], String key) {
ArrayList<ArrayList<HashMap<String, Object>>> result = new ArrayList<ArrayList<HashMap<String, Object>>>();
for( int i = 0 ; i < array.length ; ++i ) {
ArrayList<HashMap<String, Object>> secList = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> child = new HashMap<String, Object>();
child.put( key, array[i] );
secList.add(child);
result.add(secList);
}
return result;
}
private ExpandableListView getExpandableListView() {
if(listView == null) {
listView = (ExpandableListView)findViewById(R.id.hilfeListView);
SimpleExpandableListAdapter adapter = new ExpandableListViewAdapter(
this,
createGroupList(getResources().getStringArray(R.array.hilfeArray), "helpMenuPoint"),
R.layout.expandable_list_adapter_group,
new String[] { "helpMenuPoint"},
new int[] { R.id.GroupName },
createChildList(getResources().getStringArray(R.array.hilfeTextArray), "helpText"),
R.layout.expandable_list_adapter_child,
new String[] { "helpText"},
new int[] { R.id.expandableWebView }
);
listView.setAdapter(adapter);
}
return listView;
}
[/code]
1/**
2 *
3 */
4package de.projekt.ui.adapter;
5
6import java.util.List;
7import java.util.Map;
8
9import android.content.Context;
10import android.util.Log;
11import android.view.View;
12import android.view.ViewGroup;
13import android.webkit.WebView;
14import android.widget.SimpleExpandableListAdapter;
15
16public class ExpandableListViewAdapter extends SimpleExpandableListAdapter {
17
18 private Context context;
19 private String[] childFrom;
20
21
22 public ExpandableListViewAdapter(Context context,
23 List<? extends Map<String, ?>> groupData, int groupLayout,
24 String[] groupFrom, int[] groupTo,
25 List<? extends List<? extends Map<String, ?>>> childData,
26 int childLayout, String[] childFrom, int[] childTo) {
27 super(context, groupData, groupLayout, groupFrom, groupTo, childData,
28 childLayout, childFrom, childTo);
29
30 this.context = context;
31 this.childFrom = childFrom;
32 }
33
34 @SuppressWarnings("unchecked")
35 @Override
36 public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
37
38 Log.d("Adapter", (String)((Map<String, ?>)getChild(groupPosition, childPosition)).get(childFrom[0]));
39 WebView wv = (WebView)convertView;
40 wv = new WebView(context);
41 wv.loadUrl((String)((Map<String, ?>)getChild(groupPosition, childPosition)).get(childFrom[0]));
42
43 return wv;
44 }
45}
2 *
3 */
4package de.projekt.ui.adapter;
5
6import java.util.List;
7import java.util.Map;
8
9import android.content.Context;
10import android.util.Log;
11import android.view.View;
12import android.view.ViewGroup;
13import android.webkit.WebView;
14import android.widget.SimpleExpandableListAdapter;
15
16public class ExpandableListViewAdapter extends SimpleExpandableListAdapter {
17
18 private Context context;
19 private String[] childFrom;
20
21
22 public ExpandableListViewAdapter(Context context,
23 List<? extends Map<String, ?>> groupData, int groupLayout,
24 String[] groupFrom, int[] groupTo,
25 List<? extends List<? extends Map<String, ?>>> childData,
26 int childLayout, String[] childFrom, int[] childTo) {
27 super(context, groupData, groupLayout, groupFrom, groupTo, childData,
28 childLayout, childFrom, childTo);
29
30 this.context = context;
31 this.childFrom = childFrom;
32 }
33
34 @SuppressWarnings("unchecked")
35 @Override
36 public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
37
38 Log.d("Adapter", (String)((Map<String, ?>)getChild(groupPosition, childPosition)).get(childFrom[0]));
39 WebView wv = (WebView)convertView;
40 wv = new WebView(context);
41 wv.loadUrl((String)((Map<String, ?>)getChild(groupPosition, childPosition)).get(childFrom[0]));
42
43 return wv;
44 }
45}
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.