是否有一个超级简单的List / ListAdapter示例为android

时间:2010-04-22 04:10:09

标签: android listview android-activity listadapter

我有一个Web服务,它返回一个超级简单的对象列表

MyObject [] data = webServiceCall();

MyObject有一个我要显示的字段,"Name"(即data[0].Name

如何将其转换为仅在Android上的可滚动listActivity中列出这些对象的名称的活动。我对Cursors非常困惑,我不确定是否需要游标,而且我不确定要实现哪种适配器(BaseAdapterSimpleAdapter等等)

所以我想我正在寻找三件事,

活动,适配器和layout.xml

只是试图想出这个Android的东西,绝对是一个菜鸟

3 个答案:

答案 0 :(得分:44)

所以我想我从RobGThai的回答中得到了一些灵​​感,我发布了其他人的代码,我想我并没有真正使用自定义适配器

这是让我开始的超级简单示例,所以一旦我有了这个,我确保我的“MyObject”上有一个toString()方法在列表中正确显示并且我将MyObject []数组传递给“new ArrayAdapter”构造函数而不是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(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>

答案 1 :(得分:10)

使您的Activity也扩展ListActivity。

然后这应该可以帮助您入门。

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

第二个参数可以更改为您的首选布局。有关详细信息,请参阅API文档。

答案 2 :(得分:1)

当用户点击AlertDialog时,您还可以将ListView附加到ListItem。我在下面包含一个工作代码,以防任何人尝试同样的事情,

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

关键是你需要将封闭活动的上下文传递给对话框。我发现getApplicationContext()失败时出现了一条奇怪的错误消息。