1.) У вас есть ArrayList:
main_list
2.) Создайте ListView в своем XML-файле (скажем, main.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 xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/liveFeed"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
Сделайте что-то вроде этого:
ListView livefeed = (ListView)this.findViewById(R.id.liveFeed);
в вашей деятельности (если вы находитесь где-то еще, например в OnClickListener, замените «this» на переменную View, которая была передана как переменная в OnClickListener).
3.) Определите свой ArrayAdapter. Обратите внимание, что один из его параметров (третий в вашем случае) будет идентификатором TextView. Это связано с тем, что класс ArrayAdapter по умолчанию возвращает TextView в ListView. Если вы переопределите класс ArrayAdapter, вы можете использовать собственные макеты, чтобы иметь элементы с настраиваемыми представлениями в вашем ListView, но это не обязательно для того, что вы обрисовали в общих чертах в своем вопросе, и кажется, что вы его уже получили.
4.) Установите для адаптера значение ListView (для объекта ArrayAdapter с именем 'aa'):
livefeed.setAdapter(aa);
Теперь способ работы ArrayAdapter заключается в том, что он вызывает метод toString () каждого объекта и устанавливает для каждого TextView в ListView эту строку. Поэтому создайте метод toString () в классе вашего объекта, который возвращает его свойство name:
public String toString(){return name;} //assuming name is a String
Также обратите внимание, что, если вы добавляете Objects в ArrayList, уведомите об имеющемся у вас ArrayAdapter, чтобы он мог соответственно обновить ваш ListView с изменениями (учитывая ArrayAdapter с именем 'aa'):
aa.notifyDataSetChanged();
Дайте мне знать, если вам понадобится дополнительная помощь. Как всегда, отметьте галочкой ответ, если это ответило на ваш вопрос.
Также обратите внимание, что в какой-то момент вы можете захотеть сделать перекрестную ссылку на ваш ArrayAdapter и ArrayList между вашей деятельностью и классом Object. Для этого очень полезно сделать эти поля статичными.
EDIT:
Вы также хотели узнать, как получить доступ к определенному объекту при нажатии на элемент в ListView. Вот оно (если ваш ListView называется livefeed):
livefeed.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
//in here you may access your Object by using livefeed.getItemAtPosition(position)
//for example:
Object current = livefeed.getItemAtPosition(position);
//do whatever with the Object's data
}
});