2010-04-22 3 views
19

ich einen Web-Service, dieGibt es eine super einfach List/ListAdapter Beispiel gibt für android

MyObject [] data = webServiceCall() eine Super einfache Liste von Objekten zurückgibt;

MyObject-1-Feld hat i angezeigt werden soll, "Name" (d data[0].Name)

Wie kann ich mich wenden diese in eine Tätigkeit, die nur den Namen dieser Objekte in einem scrollbaren listActivity auf Android auflistet. Ich erhalte wirklich verwirrt mit Cursorn und bin nicht sicher, ob ich Cursoren brauchen und ich "bin nicht sicher, welche Art von Adapter zu implementieren (BaseAdapter, SimpleAdapter usw.)

Also ich denke, ich bin für drei Dinge suchen,

die Aktivität, der Adapter und die layout.xml

Nur versuchen, dieses android Zeug, um herauszufinden, auf jeden Fall ein noob hier

Antwort

43

so denke ich, dass ich es dachte, von RobGThai Antwort mit einer wenig Inspiration aus, bin Entsendung mir den Code für jemand anderen zu sehen, ich denke, ich nicht wirklich einen benutzerdefinierten Adapter

Dies ist der Super verwendet habe Ein einfaches Beispiel, das mich dazu gebracht hat, zu starten, also habe ich sichergestellt, dass mein "MyObject" eine toString() -Methode hatte, um es korrekt in der Liste anzuzeigen, und ich stattdessen das MyObject [] -Array in den "new ArrayAdapter" -Konstruktor übergab von 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)); 
    } 

} 

das Layout xml i verwendet (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

Ich bin nicht sicher, dass Sie diese 'temp.xml' benötigen, da Sie Built-in List Item für Ihre Aktivität verwenden. – Tarik

+1

Endlich eine Listenansicht, die läuft! –

+1

Schön, die meisten Tutorials dazu sind größer als sie sein müssen. – superluminary

9

Ihre Aktivität ListActivity sowie machen erstreckt.

Dann sollte dies Ihnen helfen, loszulegen.

Die zweiten Parameter können zu Ihrem bevorzugten Layout geändert werden. Weitere Informationen finden Sie im API-Dokument.

1

Sie können auch eine AlertDialog zum ListView befestigen, wenn der Benutzer auf einem ListItem klickt. Ich schließe einen funktionierenden Code unten, falls jemand das Gleiche versucht,

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

Der Schlüssel ist, dass Sie Ihre einschließenden Aktivität Kontext in den Dialog übergeben müssen. Ich fand das heraus, als getApplicationContext() mit einer seltsamen Fehlermeldung fehlschlug.

Verwandte Themen