Dropdown Menü in ListView

  • Antworten:5
Gelöschter Account
  • Forum-Beiträge: 15

05.12.2011, 20:42:35 via Website

Hi,

ich bin noch ziemlicher Anfänger im Android Programmieren, daher hätte ich da mal eine Frage:
ich würde in meine App gerne eine Art Dropdown Menü zu meinen ListView Einträgen einbauen, so dass es am Ende dann ungefähr so aussieht: Bild

Hatte eben einmal die Idee das über ein Dropdown Menü in der ListView zu machen, oder aber, was meiner Meinung nach noch besser wäre, ein eigenes LinearLayout erstelle, dass eben nur beim Klick auf den ListView Eintrag sichtbar wird. Geht sowas?
Ich bräuchte in dem zu erscheinenden Feld 3 ImageViews, 1 Button und noch ein TextView oder Button, wäre egal.

Bin über jede Hilfe dankbar :-)

Viele Grüße,
Ben

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

05.12.2011, 21:43:10 via App

such mal nach QuickAction. das könnte was für dich sein

swordiApps Blog - Website

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

05.12.2011, 22:40:08 via App

..oder nach ExpandableListview..
Lg Ansgar

Antworten
Gelöschter Account
  • Forum-Beiträge: 15

05.12.2011, 23:51:59 via Website

Hab mir jetzt beides mal grob durchgelesen, bin mir nicht so sicher ob das funktioniert.

Da ich eh grad mit wireframesketcher rumgespielt hab, hab ich mal noch ein besseres Bild gemacht wie ichs mir vorstelle, wenn Ihr schon Erfahrung mit QuickAction bzw. ExpandableListView gemacht habt wäre es schön wenn ihr mal kurz überlegen könntet ob das damit möglich ist und mir dann nochmal Rückmeldung gebt.

Also hier das Bild: Klick mich. Die beiden Lautsprecher und die Kreispfeile sollen Imageviews darstellen, das rechts außen einen Button und der Pfeil zwischen den Lautsprechern kann eigentlich alles sein, ImageView, TextView, Button, whatever.

Antworten
Philip M.
  • Forum-Beiträge: 90

06.12.2011, 09:56:09 via Website

Ich denke der ExpandableListView ist in der Tat das richtige für dich. Ich habe diesen auch schon öfters benutzt, allerdings eher zu meiner Anfangszeit, weswegen er nicht so wirklich ausgereift und sauber programmiert ist, aber ich stell dir mal ein bisschen Beispiel-Code bereit.


Als erstes wie ich den ExpandableListView initialisiere, und dann mein ExpandableListViewAdapter, wobei ich hier z.B. meine ChildViews mit WebViews gefüllt habe und die HTML Seiten im assets Ordner liegen. Du kannst aber auch alles mögliche rein setzen. Dieser Quellcode benötgt definitv noch eine Überarbeitung, aber er funktioniert erstmal so :-)

[code]
private void initializeExpandableListView() {
ExpandableListView lv = view.getExpandableListView();

SimpleExpandableListAdapter adapter = new ExpandableListViewAdapter(
view,
createGroupList(view.getResources().getStringArray(R.array.infoArray), "infoMenuPoint"),
R.layout.expandable_list_adapter_group,
new String[] { "infoMenuPoint"},
new int[] { R.id.GroupName },
createChildList(view.getResources().getStringArray(R.array.infoTextArray), "infoText"),
R.layout.expandable_list_adapter_child,
new String[] { "infoText"},
new int[] { R.id.recommendWebView }
);
lv.setAdapter(adapter);

view.setListView(lv);
}


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;
}


// Adapter
public class ExpandableListViewAdapter extends SimpleExpandableListAdapter {

private Context context;
private String[] childFrom;


public ExpandableListViewAdapter(Context context,
List<? extends Map<String, ?>> groupData, int groupLayout,
String[] groupFrom, int[] groupTo,
List<? extends List<? extends Map<String, ?>>> childData,
int childLayout, String[] childFrom, int[] childTo) {

super(context, groupData, groupLayout, groupFrom, groupTo, childData,
childLayout, childFrom, childTo);
this.context = context;
this.childFrom = childFrom;
}


@SuppressWarnings("unchecked")
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {

LinearLayout ll = new LinearLayout(context);
ll.setOrientation(LinearLayout.HORIZONTAL);
WebView wv = new WebView(context);
wv.loadUrl((String)((Map<String, ?>)getChild(groupPosition, childPosition)).get(childFrom[0]));
ll.addView(wv);
TextView tv = new TextView(context);
ll.addView(tv);
return ll;

}
}
[/code]

//Edit: Wegen dem Code-Tag entschuldige ich mich, aber er scheint nicht zu funktionieren.

Antworten
Gelöschter Account
  • Forum-Beiträge: 15

08.12.2011, 19:42:04 via Website

Vielen Dank! :)

Antworten