Подтвердить что ты не робот

ArrayAdapter в android для создания простого списка

Я попытался создать Activity в Android, эта активность содержит только ListView.

Как я знаю, чтобы заполнить список, нам нужно использовать ArrayAdapter.

Итак, чтобы понять ArrayAdapter, я прочитал следующую ссылку:

http://developer.android.com/reference/android/widget/ArrayAdapter.html

Но я все еще не могу понять это ясно.

Одно из самых больших сомнений в том, почему конструктору нужен идентификатор ресурса TextView, в то время как у моей активности нет TextViews, что я должен был бы ему дать?

Я не говорю, что это единственный конструктор, но я пытаюсь объяснить, что я не могу это понять.

Чтобы создать простой список, я также ссылался на следующую ссылку:

Простой ListView с использованием примера ArrayAdapter

Но опять же мое главное сомнение в том, зачем ему нужен идентификатор ресурса TextView?

Если кто-нибудь может объяснить это примером, это будет очень полезно.

EDIT:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
          android.R.layout.simple_list_item_1, android.R.id.text1, values);
4b9b3361

Ответ 1

ArrayAdapter использует TextView для отображения каждого элемента внутри него. За кулисами он использует метод toString() для каждого объекта, который он удерживает, и отображает это в TextView. ArrayAdapter имеет несколько конструкторов, которые можно использовать, и тот, который вы использовали в вашем примере:

ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)

По умолчанию ArrayAdapter использует TextView по умолчанию для отображения каждого элемента. Но если вы хотите, вы можете создать свой собственный TextView и реализовать любой сложный дизайн, который вам нужен, расширяя класс TextView. Это должно было бы зайти в макет для вашего использования. Вы можете ссылаться на это в поле textViewResourceId, чтобы привязать объекты к этому представлению, а не по умолчанию.

Для вашего использования я бы предположил, что вы используете конструктор:

ArrayAdapter(Context context, int resource, T[] objects). 

В вашем случае это будет:

ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values)

и все должно быть хорошо. Это свяжет каждую строку с дисплеем TextView по умолчанию - простым и простым белым фоном.

Чтобы ответить на ваш вопрос, вам не нужно использовать textViewResourceId.

Ответ 2

Но опять же главное сомнение в том, зачем нужен идентификатор ресурса TextView?

Посмотрите на конструктор и параметры.

public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

Добавлен в API уровня 1 Конструктор

Параметры

context Текущий контекст.

resource Идентификатор ресурса для файл макета, содержащий макет, который будет использоваться при создании представлений.

textViewResourceId Идентификатор TextView в ресурсе макета для заполнения объектов Объекты для представления в ListView.

android.R.id.text1 относится к идентификатору текста в ресурсе android. Поэтому вам не нужно иметь в своей деятельности.

Здесь полный список

http://developer.android.com/reference/android/R.id.html

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1, android.R.id.text1, values);

this относится к контексту активности

android.R.layout.simple_list_item_1 simple_list_item_1 - это макет в android.R.layout.

android.R.id.text1 относится к идентификатору ресурса android.

values - это строковый массив из предоставленной вами ссылки

http://developer.android.com/reference/android/R.layout.html

Ответ 3

public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

Здесь ресурс означает "идентификатор" макета, который вы используете, при создании экземпляра представления.

Теперь этот макет имеет много дочерних представлений со своими идентификаторами. Таким образом, textViewResourceId сообщает, какой дочерний вид нам нужно заполнить данными.

Ответ 4

public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

Я также новичок в Android, поэтому я могу ошибаться. Но согласно моему пониманию при использовании этого для создания списка. 2-й аргумент - это расположение элементов списка. Макет состоит из множества видов (вид изображения, текстовое представление и т.д.). С третьим аргументом вы указываете, в каком представлении или текстовом режиме вы хотите, чтобы текст отображался.

Ответ 5

Идентификатор ресурса TextView, который ему нужен, предназначен для файла макета TextView, поэтому он не будет находиться в одном и том же действии.

Вы можете создать его, перейдя в File > New > XML > XML Layout File и введите тип виджетов, который является "TextView" в поле корневого тега.

Источник: https://www.kompulsa.com/the-simplest-way-to-implement-an-android-listview/

Ответ 6

Вам не нужно использовать id для textview. Вы можете узнать больше из android arrayadapter. В приведенном ниже коде инициализируется массив.

ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.single_item, eatables);