2016-06-02 14 views
0

Ich bin ein absoluter Anfänger mit Android, kann ich erfolgreich Daten aus meiner Parse-Datenbank abrufen, aber ich kann sie nicht in einem benutzerdefinierten ListView anzeigen, die verdrahtete Sache ist, dass die App aber stoppt weder die Android-Monitor oder Message-Konsolen in Android Studio geben Sie mir einen Fehler, die Nachricht tatsächlich Konsole Informationen sagt: BUILD ERFOLGREICH ist die Logcat total leer, aber die App stoppt mit einem Alarm wie Leider YourApp gestopptAndroid ListView Adapter funktioniert nicht mit Parse SDK

Hier ist mein Code in der MainActivity.java:

// MARK: - QUERY EVENTS 
public void queryEvents() { 

    final ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this, 
      R.layout.test_cell); 
    final ListView eventsListView = (ListView) findViewById(R.id.eventsListView); 
    eventsListView.setAdapter(listAdapter); 

    // Query 
    ParseQuery<ParseObject> query = ParseQuery.getQuery("EventsClass"); 
    query.findInBackground(new FindCallback<ParseObject>() { 
     public void done(List<ParseObject> objects, ParseException error) { 
      if (error == null) { 
       eventsArray = objects; 
       progDialog.dismiss(); 

       for (int i = 0; i < eventsArray.size(); i++) { 
        ParseObject eventClass = eventsArray.get(i); 
        String title = eventClass.getString("title"); 
        Toast.makeText(getApplicationContext(), eventClass.getString("title"), Toast.LENGTH_LONG).show(); 
        listAdapter.add(title); 
       } 

      } else { 
       Toast.makeText(getApplicationContext(), error.getMessage().toString(), Toast.LENGTH_LONG).show(); 
      } 

     } 
    }); 

Hinweis: Wenn ich listAdapter.add(title); auszählen, ist die Toast-Nachricht in Ordnung, es feuert nacheinander alle "Titel" Datensätze aus meiner Parse-Datenbank, und die App stürzt nicht ab. Ansonsten bekomme ich keine Daten und die App stoppt wie oben erwähnt.

Mein R.layout. test_cell ist eine einfache XML-Datei und es ist korrekt, es beherbergt ein LinearLayout mit einem TextView innerhalb.

Was mache ich hier falsch? Ich habe keine benutzerdefinierte ListAdapter.java Datei erstellt, weiß nicht, ob ich wirklich brauche es mit dem obigen Code ...

Vielen Dank!

+0

Wenn Sie ein 'Leider, YourApp hat gestoppt' erhalten - sollte es etwas in Ihrem Logcat entweder von dem Gerät oder Emulator, auf dem Sie testen, sein. –

+0

Deshalb habe ich gesagt, es ist verdrahtet, ich bekomme wirklich nichts in der Logcat :( – cubycode

Antwort

1

Ich denke, Ihr Problem in der basiert auf, wie Sie listAdapter init, würde ich empfehlen, für Sie zwei Dinge zu tun:

1) eine ArrayList<String> erstellen alle Datensätze zu speichern, die Sie von Parse

bekommen

2) Init listAdapter stellen Sie sicher, den Konstruktor zu verwenden, der als Parameter Context, layout, id und ArrayList übernimmt. Die ersten zwei Parameter, die Sie bereits haben, fügen Sie einfach die dritte hinzu, die die ID der TextView in R.layout.test_cell wäre, und für den vierten Parameter fügen Sie die ArrayList hinzu, die Sie erstellen. Stellen Sie sicher, dass es vor diesem Punkt initialisieren mit new ArrayList<>()

3) Wenn Sie Ihre Werte von Parse-Update erhalten die ArrayList stattdessen die Adapter direkt zu aktualisieren. Etwas wie dieses:

for (int i = 0; i < eventsArray.size(); i++) { 
       ParseObject eventClass = eventsArray.get(i); 
       String title = eventClass.getString("title"); 
       arrayList.add(title); 
    } 
    // Once you update your ArrayList you can update the Adapter 
    listAdapter.notifyDataSetChanged(); 

Das sollte den Trick tun.

+0

und was ist, wenn meine test_cell mehrere textViews und eine ImageView zu? – cubycode

+0

Dann müssen Sie einen benutzerdefinierten Adapter anstelle der Standard-'ArrayAdapter' verwenden. –

+0

ok, irgendein Beispielcode dafür? Ich habe wirklich keine Ahnung wie man es macht – cubycode

Verwandte Themen