我有一个Web服务,它返回一个超级简单的对象列表
MyObject [] data = webServiceCall();
MyObject有一个我要显示的字段,"Name"
(即data[0].Name
)
如何将其转换为仅在Android上的可滚动listActivity
中列出这些对象的名称的活动。我对Cursors非常困惑,我不确定是否需要游标,而且我不确定要实现哪种适配器(BaseAdapter
,SimpleAdapter
等等)
所以我想我正在寻找三件事,
活动,适配器和layout.xml
只是试图想出这个Android的东西,绝对是一个菜鸟
答案 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()
失败时出现了一条奇怪的错误消息。