有没有针对Android的超级简单的List / ListAdapter示例?

23

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

MyObject[] data = webServiceCall();

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

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

所以我想找到三件事,

活动、适配器和layout.xml

只是试图弄清楚这个Android的东西,肯定是个新手

3个回答

45

我认为我在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>

9
我不确定你是否需要这个 temp.xml,因为你正在为你的活动使用内置列表项。 - Tarik
1
终于有一个可以运行的列表视图示例了! - Allen Edwards
1
不错,大多数关于这个的教程都比必要的内容多。 - superluminary

11

让你的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文档。


1

当用户点击ListItem时,您还可以将AlertDialog附加到ListView上。如果有人尝试同样的事情,我在下面包含了一个可工作的代码示例:

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()时出现奇怪的错误消息,我发现了这一点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接