Frage von menyou, 20

verschiedene Textcolor für jede Ausgabe des Strings im Listview?

Ich habe eine php file und diese schreibt einen string, welche android ausliest. Der input den sich Android holt sieht also grob gesagt wie folgt aus

{"title":"neune* bla bla, 4e9cf4d09d8a87c,","categories": []},{"title":"ja* bla bla,  4e9cf4d09d8asdqd,","categories": []}

Die Trennung funktioniert perfekt. "neune" bekommt einen blog und "ja" auch seinen eigenen. leider bekommen, aber beide das zuletzt geäußerte layout, welches über if vorgegeben wird.

Beide layouts funktionieren auch einwandfrei. Leider aber nur, wenn ich sie auch im gesamten festlege...

ps.: das symbole "kleiner gleich" wird hier bei gutefrage.net nicht richtig dargestellt, also schr. ich "//kleiner gleich" anstatt das symbole zu setzen->im code its es natürlich richtig...

private void parseResult(String result) {//scan antwort einlesen    try{

JSONObject response = new JSONObject(result);

JSONArray posts = response.optJSONArray("posts");

blogTitles1 = new String[posts.length()];
for(int i=0; i //kleiner gleich posts.length();i++ ) {
            JSONObject post = posts.getJSONObject(i);
            this.title = post.getString("title");



        if (title.toLowerCase().contains("neune") && title.contains(this.id.toLowerCase())) {    
//dann layout 1}

if (title.toLowerCase().contains("ja") && title.contains(this.id.toLowerCase())) {    
    //dann layout 2}
}
}}

Hat jemand einen Vorschlag, wie ich es umsetzen könnte?

Antwort
von Copyyy, 14

Kann mir das gerade schlecht vorstellen. Was machst du unter //layout 1 und //layout 2?

Kommentar von menyou ,

Habe meine Frage gerade editiert-darüber steht noch ein try block...

bei den bedingungen ist dann jeweils

listView.setAdapter(arrayAdapter);

blogTitles[i] = title;

Ps.: ich habe auch zwei arrayadapter definiert 

arrayAdapter1 = new ArrayAdapter(MainActivity.this, R.layout.mytextview, blogTitles1);arrayAdapter2 = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, blogTitles2);

Diese gehen einzeln an zu sprechen, aber leider nicht beide...

Kommentar von Copyyy ,

Wenn ich es richtig verstehe:
Du loopst durch alle JSON-Objekte. Wenn im Titel neune steht, dann setzt du den arrayAdapter1, bei ja den arrayAdapter2.
Allerdings endet deine Schleife beim Titel mit ja, weswegen der Adapter vom listView am Ende auch auf arrayAdapter2 gesetzt ist.
Debug das ansonsten mal mit ein paar Logs, denn kannst du nachlesen, wann welcher arrayAdapter gesetzt wird, also:

if (title.toLowerCase().contains("neune") && title.contains(this.id.toLowerCase())) { listView.setAdapter(arrayAdapter1);
    Log.d(TAG, "set arrayAdapter1);
}else if (derAndereMist){
   listView.setAdapter(arrayAdapter2);
   Log.d(TAG, "set arrayAdapter2);
}
Kommentar von menyou ,

Ja genau... es ist auch so wie du beschreibst. ->das log kann ich mir also sparen(?)

Die frage ist jetzt. Wie kann man das überhaupt machen, dass er beide gesondert behandelt?

Kommentar von Copyyy ,

War mir nur nicht sicher, lange nichts für Android programmiert :P

Du brauchst einfach zwei listViews (zumindest fällt mir sonst keine Möglichkeit ein)

Okay, kurz mal Google: Vielleicht hilft einer der beiden Links, die geantwortet wurden, dir weiter? https://stackoverflow.com/questions/11118809/setting-more-than-one-adapter-for-a...

Kommentar von menyou ,

mmmh mal ein neuer google ansatz... Hatte das schon mit zwei listviews probiert, aber das brachte irgendwie auch nichts... mal sehen, werde mal auf dieser Google suchanfrage surfen, vielleicht finde ich da etwas...  Danke

Keine passende Antwort gefunden?

Fragen Sie die Community