2010-04-22 18 views
19

Mam usługę internetową, która zwraca bardzo prostą listę obiektówCzy istnieje bardzo prosty przykład List/ListAdapter tam dla android

MyObject [] data = webServiceCall();

MyObject ma 1 pole chcę wyświetlić, "Name" (tj data[0].Name)

jaki sposób można przekształcić działalność, która wymienia tylko nazwy tych obiektów w przewijalnej listActivity na Androida. Dostaję naprawdę mylić z kursory i nie jestem pewien, czy muszę kursory i ja "nie jestem pewien, jaki rodzaj adaptera do wdrożenia (BaseAdapter, SimpleAdapter etc)

więc myślę, szukam trzy rzeczy,

aktywność, adapter i layout.xml

tylko próbuje dowiedzieć się ten android rzeczy, zdecydowanie noob tutaj

Odpowiedz

43

więc myślę, że zorientowaliśmy się z odrobiną inspiracji odpowiedź RobGThai za, jestem opublikowania kodu dla nikogo innego, aby zobaczyć, myślę, że tak naprawdę nie użyć niestandardowego adaptera

Jest super prosty przykład, który dał mi początek, więc gdy już to zrobiłem, upewniłem się, że mój "MyObject" ma na nim metodę toString(), aby poprawnie wyświetlić na liście i przekazałem tablicę MyObject [] do konstruktora "nowego ArrayAdapter" z 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)); 
    } 

} 

xml układ użyłem (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

Nie jestem pewien, czy potrzebujesz tego "temp.xml", ponieważ korzystasz z wbudowanego elementu listy dla swojej aktywności. – Tarik

+1

Wreszcie przykład widoku listy, który działa! –

+1

Fajne, Większość samouczków na ten temat jest większa niż potrzeba. – superluminary

9

uczynić swoją aktywność rozciąga ListActivity również.

To powinno pomóc w rozpoczęciu pracy.

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); 

Drugie parametry można zmienić na preferowany układ. Zobacz dokument API, aby uzyskać więcej informacji.

1

Można również dołączyć AlertDialog do ListView gdy użytkownik kliknie na ListItem. Ja w tym kodeks pracy poniżej w przypadku gdy ktoś próbuje to samo,

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(); 
} 
}); 

Kluczem jest to, że trzeba przekazać kontekst swoją aktywność załączając do okna. Znalazłem to, gdy getApplicationContext() nie udało się z dziwnym komunikatem o błędzie.

Powiązane problemy