ListView mit 2 zeilen pro Eingabe

  • Moin Leute, ich habe einen Button bei dem auf Klick ein prompt geöffnet wird und man 3 Werte in 3 EditBoxen eingeben kann.
    Ich habe zudem eine ListView welche die eingegebenen Werte anzeigen soll. So wie ich es momentan umgesetzt habe funktioniert es mit einem eingegebenen Wert einwandfrei, jedoch habe ich vor 2 bzw 3 Werte anzeigen zu lassen. Sobald ich einen zweiten Wert eintrage wird er in der nächsten ListView-Zeile eingetragen und nicht so wie ich es vorhabe in der nächsten Zeile(Wenn man sich den Code anschaut ist es auch logisch so wie es momentan abläuft!).


    Hier mal der code:



    Ich könnte theoretisch inputs.add(text+"\n"+text2) machen um es in 2 verschiedenen Zeilen anzeigen zu lassen, das ist jedoch nicht mein Ziel.
    Am Ende soll es von der Idee her so aussehen wie hier vorgestellt:
    http://sogacity.com/how-to-mak…rrayadapter-for-listview/


    Jeoch komme ich mit seiner Lösung nicht klar und hoffe das mir hier jemand helfen kann das Problem anhand meines Codes zu lösen.


    Mfg


    septix

  • Was ist den dein Problem beim Verständnis der vorgestellten Lösung?


    Zu deinem Quelltext:


    Erstell dir am besten für deinen Adapter eine eigene Datei anstatt das als innere Klasse mit festem Context zu verwenden. Es hat so den Vorteil, dass du diesen Adapter auch aus einem anderen Context verwenden könntest.


    Dafür legst du z.b folgende Instanzvariablen an:


    private Context context;


    sowie private List<PromptInput> promptinputs; (Hierfür erstellst du dir einfach eine eigene Klasse, welche ein einzelnes EIngabeobjekt bezeichnet)


    erstell jetzt einfach deinen Konstruktor z.b:


    Java
    public MyAdapter(Context context, List<PromptInput> promptinputs) {
    		super(context, android.R.id.content, promptinputs);
    		this.context = context;
    		this.promptinputs = promptinputs;
    	}


    beides initialisierst du somit im Konstruktor.


    Nun legst du dir einfach eine neue layout.xml an, welches eine einzelne Zeile in deinem ListView präsentieren soll.


    In der Methode:


    Java
    getView(int position, View convertView, ViewGroup parent)


    kannst du nun deine eigene layout.xml setzen:


    Java
    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = inflater.inflate(R.layout.cell, null);


    über das View kannst du nun problemlos auch die Referenzen holen:


    convertView.findViewById(int id);


    Das Layout brauchst du natürlich nur einmalig inflaten ;) Des Weiteren solltest du dir einen Viewholder anlegen um die Performance zu steigern.




    Beispiel für deine MyAdapter Klasse:



  • nummer 1: bitte benutze showDialog(id) und nicht dialog.show(), näheres dazu erfährst du in der Android Dokumentation
    nummer 2: ich weiß nicht wielang deine liste werden soll, aber wenn sie bei einem item bleibt, reicht es wenn du einfach dynamisch in dem adapter eine weitere textview erstellst und die anzeigen lässt.

  • nummer 1: bitte benutze showDialog(id) und nicht dialog.show(), näheres dazu erfährst du in der Android Dokumentation


    Wieso? Das einzig wichtige, was mir die Dokumentation zu Activity.showDialog(id) mitteilt, ist:

    Zitat

    This method was deprecated in API level 13.
    added in API level 8.


    Wozu soll ich diese Methode dann also benutzen?
    Ich kann damit ja nur 5 API Level bedienen, MIR wäre das zu wenig.
    Dialog.show() hingegen ist seit API Level 1 dabei und nicht als ‚deprecated‘ markiert.


    Man sollte lediglich aufpassen, dass man vor Aufruf die Activity via ‚isFinishing()‘ auf Beenden prüft.
    Ansonsten kann es zu lustigen Abstürzen führen, wenn die anzeigende Activity gerade beendet wird.


    Also noch einmal konkret die Frage: warum sollte man deiner Meinung nach Activity.showDialog(id) an Stelle von Dialog.show() nutzen?

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Moin,
    erstmal Danke an drumliner, ich habe den Adapter mal ausgelagert und noch etwas rumgefrickelt und es dann hinbekommen so wie ich es vor hatte. Danke für die Tipps.


    Zu dem showDialog(id) wollte ich auch noch geschrieben haben das diese Methode bei mir als depricated angezeigt wird, meine dialog.show() Methode allerdings einweindfrei funktioniert.

  • da war ich wohl nicht up to date *gg*


    ihr habt recht, showdialog ist nichtmehr aktuell, aber dialog.show() eben auch nicht.


    die google api sagt man solle lieber die fragmentdialoge nutzen, durch die support library steht die auch unter alten versionen zur verfügung

  • ihr habt recht, showdialog ist nichtmehr aktuell, aber dialog.show() eben auch nicht.


    Dass dialog.show() nicht mehr aktuell sei finde ich nirgendwo.
    Und 'man sollte lieber y' heißt nicht automatisch 'man darf nicht x!'.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!