2010-04-22 8 views
19

Ho un servizio Web che restituisce un super semplice elenco di oggettiC'è un super semplice esempio List/ListAdapter là fuori per Android

MyObject [] = dati webServiceCall();

MyObject ha 1 campo voglio visualizzare, "Name" (vale a dire data[0].Name)

come posso trasformare questo in un'attività che elenca solo il nome di questi oggetti in una scorrevole listActivity su Android. Sto diventando davvero confuso con i cursori e non sono sicuro se ho bisogno di cursori e io "non sono sicuro di che tipo di adattatore per l'attuazione (BaseAdapter, SimpleAdapter ecc)

Quindi credo che sto cercando tre cose,

l'attività, l'adattatore e la layout.xml

solo cercando di capire questa roba Android fuori, sicuramente un noob qui

risposta

43

quindi penso che ho capito con un po 'di ispirazione dalla risposta di RobGThai, sto postando il codice per chiunque altro di vedere, credo che non ho usato davvero un adattatore personalizzato

Questo è il super semplice esempio che mi ha iniziato, quindi una volta ho avuto questo, ho fatto in modo che la mia "MyObject" ha avuto un metodo toString() su di esso per mostrare correttamente nella lista e ho superato l'array MyObject [] al costruttore "nuova ArrayAdapter" invece di listItems

FooList.java

import android.app.ListActivity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 

public class FooList extends ListActivity { 
    String[] listItems = {"item 1", "item 2 ", "list", "android", "item 3", "foobar", "bar", }; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.temp); 
     setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, listItems)); 
    } 

} 

l'xml di layout ho usato (Temp.xml)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ListView android:id="@android:id/list" android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 
    <TextView android:id="@android:id/empty" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:text="Empty set" /> 
</LinearLayout> 
+9

io non sono sicuro che avete bisogno di questo 'temp.xml' dal momento che si sta utilizzando incorporato voce di elenco per la vostra attività. – Tarik

+1

Infine un esempio di visualizzazione lista che viene eseguito! –

+1

Nizza, La maggior parte dei tutorial su questo sono più grandi hanno bisogno di essere. – superluminary

9

rendere la vostra attività si estende ListActivity pure.

Quindi questo dovrebbe aiutarti a iniziare.

Object[] sArray = {"This", "is", 3.5, true, 2, "for", "bla"}; 
ArrayAdapter adp = new ArrayAdapter(this, android.R.layout.simple_list_item_1, sArray); 
setListAdapter(adp); 

I secondi parametri possono essere modificati nel layout preferito. Vedi documento API per ulteriori informazioni.

1

È inoltre possibile collegare un AlertDialog al ListView quando l'utente fa clic su un ListItem. Sono compresi un codice di lavoro al di sotto nel caso in cui qualcuno sta cercando la stessa cosa,

final ListView v = getListView(); 
v.setOnItemClickListener(new OnItemClickListener() { 

public void onItemClick(final AdapterView<?> parentView, View view, int position, 
     long id) { 
    final String fileName = (String) parentView.getItemAtPosition(position); 
    new AlertDialog.Builder(parentView.getContext()).setTitle("Upload").setMessage("Upload " + fileName +"?") 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface di, int arg1) { 
       //do something here... 
      } 
     }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface di, int arg1) { 
       di.dismiss();       
      } 
     }).show(); 
} 
}); 

La chiave è che è necessario passare contesto della vostra attività che racchiude alla finestra di dialogo. Ho scoperto che quando getApplicationContext() non riuscita con un messaggio di errore strano.

Problemi correlati