Есть ли супер простой пример List / ListAdapter для android
у меня есть веб-сервис, который возвращает простой список объектов
MyObject [] data = webServiceCall ();
MyObject имеет 1 поле, которое я хочу отобразить, "Name"
(т. е. data[0].Name
)
как я могу превратить это в действие, которое перечисляет только имя этих объектов в прокручиваемом listActivity
на Android. Я действительно путаюсь с курсорами и не уверен, нужны ли мне курсоры, и я не уверен, Какой адаптер реализовать (BaseAdapter
, SimpleAdapter
etc)
Итак, я думаю, что ищу три вещи,
активность, адаптер и layout.xml
просто пытаюсь понять это android вещи, определенно нуб здесь
3 ответов
поэтому я думаю, что я понял это с небольшим вдохновением от ответа RobGThai, я отправляю код для кого-то еще, я думаю, что я действительно не использовал пользовательский адаптер
это супер простой пример, который заставил меня начать, поэтому, как только у меня это было, я убедился, что мой "MyObject" имел метод toString (), чтобы показать правильно в списке, и я передал массив MyObject[] в конструктор "new ArrayAdapter" вместо элементов listitem
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>
сделать вашу деятельность расширяет 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.
вы также можете прикрепить 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()
не со странным сообщением об ошибке.