ListView in neuer Activity öffnen - Problem

  • Hallo :)


    Ich habe ein Problem und hoffe auf eure Hilfe… ärgerlich an dem Problem ist, dass es etwas kleines aber entscheidendes zu sein scheint, zu dem ich aber in Google und Foren einfach nichts finden konnte.


    Ich möchte eine einfache ListView erstellen. Wenn ich diese in der MainActivity erstellen lasse, klappt alles wunderbar. Sobald ich aber versuche, sie nicht dort sondern in einer neuen Activity mit neuem Layout zu erstellen, funktioniert es nicht mehr. Das kuriose ist, dass es der gleiche Quelltext ist, ich bin ihn Punkt für Punkt durchgegangen.


    Ich habe den Quelltext versuchsweise auskommentiert und konnte das Problem auf den markierten Part zurückführen. Wenn der auskommentiert ist, stürzt die App beim Öffnen der neuen Activity nicht ab.


    Ich hoffe auf eure Hilfe…


    Liebe Grüße,


    Katharina


    ObjektListActivity.java




    Zur Orientierung ein Auszug aus MainActivity.java und Objekt.java:


    Auszug aus MainActivity.java



    Hier kann der Fehler aber meines Erachtens nicht liegen, da bei Anklicken der Positionen 0 bis 3 die neuen Activitys samt Layout problemlos geöffnet werden.


    Objekt.java


  • Hallo Katharina und willkommen im Forum!


    Vielen Dank, dass Du so ausführlich Deine Codeabschnitte mit uns teilst.
    Für die Fehlersuche wäre es noch ausgesprochen hilfreich, wenn Du die Inhalte aus dem LogCat Fenster mit uns teilen würdest.
    Und zwar den Part, der in fettem Rot geschrieben ist und zur Kategorie 'error' gehört.


    Eventuell hätte auch das Layout 'listview_layout.xml' geholfen.


    So können wir leider nur raten.
    Aber eventuell reicht das schon.


    Ich vermute, Deine App stürzt mit einer NullPointerException in der Zeile ab, die ' list.setAdapter(adapter);' enthält.
    (Zeile 40 in Deinem Beispiel.)
    Das würde dann passieren, wenn findViewById() nichts findet, null zurückliefert und Du dann übersetzt 'null.setAdapter(adapter);' auszuführen versuchst.


    Im Gegensatz zu Objective-C mag Java Nachrichten an null überhaupt nicht und quittiert dies mit einem Absturz.
    findViewById() findet dann kein View, wenn diese ID nicht im angegebenen Layout zu finden ist.


    Schau also bitte mal in Deine listview_layout.xml, welche ID Du Deiner ListView wirklich gegeben hast.
    Vermutlich ist R.id.listView1 im Layout activity_main.xml oder einem anderen Layout definiert, weshalb sie noch als Möglichkeit angeboten wird.


    Sollte dies nicht das Problem sein, so schick uns doch bitte noch den Auszug aus der LogCat mit. :)


    Gruß Marco

    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!«

  • Hallo Marco!


    Als allererstes tausend Dank für die schnelle Antwort :)


    Im LogCatFenster wird leider ziemlich viel rot angezeigt, ich habe die Screenshots davon angehängt.


    Meine Layout-Dateien sehen so aus:




    item_view.xml



    Liebe Grüße,


    Katharina

  • Also das Ganze kann man so lesen:


    'InflateException: Objekt der Klasse <unbekannt> aus binärem XML in Zeile #6 konnte nicht erstellt werden.'


    Der wichtige Punkt ist dann MyListAdapter.getView, denn das ist von Dir.


    Und darin findet man:
    getLayoutInflater().inflate(R.layout.item_view, …


    Wenn Du also mal in item_view.xml schaust, was da so in Zeile #6 als Objekt eingetragen ist, kommst Du der Lösung sicherlich einen Schritt näher.


    (Wann wurde eigentlich meine ehemalige Landeshauptstadt zum Weltkulturerbe erklärt?)

    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!«

  • In meiner Zeile 6 ist die id von meinem Bild eingetragen, dass ich in der Liste neben dem Text gerne anzeigen würde.


    android:id="@+id/item_icon"


    Und in der Klasse MyListAdapter habe ich definiert, woher dieses Bild genommen wird:


    ImageView imageView = (ImageView) itemView.findViewById(R.id.item_icon);


    imageView.setImageResource(currentObjekt.getIconID());


    Ich verstehe es leider immer noch nicht :(










    Ach, du kommst aus Mecklenburg-Vorpommern?=) Wurde sie noch nicht, aber sie würde gerne und befindet sich momentan auf einem guten Weg dahin.

  • Im Falle 'Bild neben Text' würde ich fast auf das XML Element
    android:drawableLeft="@drawable/objekt1" #
    des TextView ausweichen.
    Lässt sich soweit ich weiß auch im Code ziemlich einfach setzen.


    Jedenfalls kann ich mir auch nicht vorstellen, dass es damit ein Problem geben könnte.
    Andererseits ist im vorletzten Screenshot halb eine OutOfMemory Exception beim Erstellen eines ImageView zu erkennen.


    Ist Dein Bild eventuell ein bisschen zu groß? ;)


    Ja, bis Ende 2006 habe ich in Mecklenburg gelebt. Knapp 50km nordwestlich von Schwerin. :)

    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!«

  • Marco, ich danke dir!


    Nachdem ich das gleiche Bild wie in meiner Test-App zum Thema ListView eingebunden habe, hat es funktioniert. Es scheint also tatsächlich nur an der Größe gelegen zu haben! Tausend Dank, ich war am verzweifeln und jetzt kann ich neu motiviert weitermachen :)

Jetzt mitmachen!

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