Адаптер массива в Android, чтобы создать простой ListView с



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



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



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



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



но все же я не могу понять это ясно!



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



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



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



простой ListView с помощью примера ArrayAdapter.



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



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



EDIT:



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

7 ответов:

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.

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

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

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

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

параметры

context в текущем контексте.

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

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 это макет в андроид.R. макет.

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

values это массив строк из ссылки, которую вы предоставили

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

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

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

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

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

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

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

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

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

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

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

на ваш вопрос ответ android.R.id.text1 имеет тип int: идентификатор объекта TextView в макете ресурса, чтобы быть заполнены.

ArrayAdapter имеет так много конструкторов с разным количеством аргументов Я упоминаю некоторые из них

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

Теперь вы можете понять, что каждый конструктор отличается, и они использовали разные списки аргументов.

и простой ответ - Вы можете использовать ArrayAdapter с текстовым представлением внутри целевого xml-файла или без него. Это не имеет значения. И вам не нужно указывать идентификатор текстового представления, без которого вы можете его использовать. Но вам, возможно, придется пойти с некоторым вариантом заранее с вашим простым представлением списка вы должны пойти с текстовым представлением.!

вот пример

ArrayAdapter adapter = new ArrayAdapter<String>(this,R.layout.ListView,StringArray);
ListView listView = (ListView) findViewById(R.id.listview);
listView.setAdapter(adapter);

Это также действительный код, который вы можете использовать с гораздо более ясным.

Comments

    Ничего не найдено.