2016-03-25 9 views
0

Ich muss in der ListView vorhandenen mehr Daten, die ich von einer Datenbank, jedoch mit einem "mehr" -Knopf ohne Start oder Aktualisierungsaktivität erhalten.Aktualisieren oder Zusammenführen ArrayAdapter mit neuen Daten - Taste mehr

Ich schlug diesen Weg, adapter.AddAll (NewAdapter), aber es zeigt nur die Adresse an (ich denke, das ist es) Linie in der Liste, wie Sie in dem Bild in der Zeile nach dem Klicken mehr als ob sehen können Er hatte das XML-Feld nicht identifiziert. Aber der Adapter ist der selbe, um eine neue Listview nur mit dem neuen Adpter korrekt zu erstellen.

enter image description here

Jeder Vorschlag?

@Override 
    protected void onPostExecute(List<RssItem> result) { 
     progressBar.dismiss(); 

     // Get a ListView from main view 
     ListView itcItems = (ListView) findViewById(R.id.listMainView); 

     if (Integer.parseInt(limit) < 1) { 
      adapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result); 
      itcItems.setAdapter(adapter); 
      itcItems.setOnItemClickListener(new ListListener(result, local)); 

     } else { 

      Nadapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result); 

      if (Nadapter.getCount() == 0){ 
       final Button btMais = (Button) findViewById(R.id.btMais); 
       btMais.setVisibility(View.GONE); 
       Toast.makeText(getBaseContext(), "Don't more data.", Toast.LENGTH_SHORT).show(); 
      } else { 
       adapter.addAll(Nadapter); 
       itcItems.setAdapter(adapter); 
       itcItems.setOnItemClickListener(new ListListener(result, local)); 
      } 
     } 
    } 

Endcode und läuft mit Hilfe Shadab:

@Override 
    protected void onPostExecute(List<RssItem> result) { 
     progressBar.dismiss(); 

     // Get a ListView from main view 
     ListView itcItems = (ListView) findViewById(R.id.listMainView); 

     if (Integer.parseInt(limit) < 1) { 
      adapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result); 
      itcItems.setAdapter(adapter); 
      itcItems.setOnItemClickListener(new ListListener(result, local)); 

     } else { 

      Nadapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result); 

      if (Nadapter.getCount() == 0){ 
       final Button btMais = (Button) findViewById(R.id.btMais); 
       btMais.setVisibility(View.GONE); 
       Toast.makeText(getBaseContext(), "Don't more data.", Toast.LENGTH_SHORT).show(); 
      } else { 
       adapter.addAll(result); 
       adapter.notifyDataSetChanged(); 
      } 
     } 
    } 
+0

Wenn Sie einige neue Daten zu Ihrem Adapter hinzuzufügen, haben Sie unter Verwendung ** notifyDataSetChanged zu „es mitteilen“() ** (es neue Daten hinzufügt und aktualisieren Listenansicht) hoffe, es hilft! –

Antwort

0

Sie müssen keinen neuen Adapter erstellen und zusammenführen. Stattdessen müssen Sie die neuen Daten in Ihrem bereits vorhandenen Adapter festlegen und sie unter Verwendung von notifyDataSetChanged() aktualisieren.

@Override 
     protected void onPostExecute(List<RssItem> result) { 
      progressBar.dismiss(); 

      // Get a ListView from main view 
      ListView itcItems = (ListView) findViewById(R.id.listMainView); 

      if (Integer.parseInt(limit) < 1) { 
       adapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result); 
       itcItems.setAdapter(adapter); 
       itcItems.setOnItemClickListener(new ListListener(result, local)); 

      } else { 



       if (Nadapter.getCount() == 0){ 
        final Button btMais = (Button) findViewById(R.id.btMais); 
        btMais.setVisibility(View.GONE); 
        Toast.makeText(getBaseContext(), "Don't more data.", Toast.LENGTH_SHORT).show(); 
       } else { 
        //Whatever your initial list was add the new data in that list 
        oldList.addAll(result); 
        adapter.notifyDataSetChanged(); 
       } 
      } 
     } 
+0

Ich gestehe, dass ich falsch verstehe, wie es die Daten in ArrayAdapter behandelt, bis etwas ähnliches versucht hatte, aber setAdapter wieder verwendet. Jetzt funktioniert das so, wie du es angedeutet hast, außer dass der (neue Adapter - Adapter) Danke Shadab behielt. –

0

Sie müssen die Elemente auf dem Adapter nicht ein neuer Adapter hinzuzufügen.

Referenz: ArrayAdaper documentation.

+0

Obrigado, Tiago. –