Как отобразить массив JSON в ListView [duplicate]

Попробуйте использовать следующее:

intent.setClassName("com.x.y", "com.x.y.className");

Это работает для меня

56
задан Ciro Santilli 新疆改造中心 六四事件 法轮功 24 February 2016 в 19:03
поделиться

7 ответов

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

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

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

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

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

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

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

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

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

65
ответ дан Sam Rad 15 August 2018 в 21:12
поделиться
  • 1
    поэтому я понял из вашего ответа, что нам нужно предоставить идентификатор ресурса TextView, если мы создаем сложный TextView или пользовательский TextView, иначе он нам не нужен или мы можем использовать значение по умолчанию, указанное в файле android.R.id.text1. Я прав? – Nirav Kamani 16 January 2014 в 09:00
  • 2
    В точку. Вам это не нужно, если вы не пытаетесь создать свои собственные представления. – ucsunil 16 January 2014 в 23:04
  • 3
    Могу ли я использовать ArrayAdapter & lt; HashMap & lt; String, String & gt; & gt; & gt; (это, android.R.layout.simple_list_item1)? потому что в моем случае я хочу использовать HashMap, но нет подходящего метода конструктора, который принимает hashmap. – Zin Win Htet 2 March 2016 в 17:06
  • 4
    ArrayAdapter использует общий аргумент, который может быть чем угодно, но вам все еще нужна коллекция для поддержки адаптера. Поскольку в вашем случае вы хотите использовать HashMap, вам придется создать свой пользовательский адаптер из BaseAdapter – ucsunil 2 March 2016 в 18:05
  • 5
    github.com/codepath/android_guides/wiki/… дал вам подробное объяснение – Nepster 12 August 2016 в 05:37
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

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

2
ответ дан Anuj Mahajan 15 August 2018 в 21:12
поделиться

Но опять же главное сомнение в том, зачем нужен идентификатор ресурса 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

18
ответ дан Malwinder Singh 15 August 2018 в 21:12
поделиться
  • 1
    можете ли вы рассказать мне, в чем заключается потребность в идентификаторе ресурса int textView? – Nirav Kamani 29 September 2013 в 19:30
  • 2
    вы хотите, чтобы строка отображалась. поэтому вам нужно текстовое представление. Адаптер использует идентификатор textview в пакете ресурсов Android. Вы также можете использовать другой конструктор arrayadapter или у вас может быть собственный пользовательский адаптер – Raghunandan 30 September 2013 в 04:44

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

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

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

2
ответ дан Nicholas Brown 15 August 2018 в 21:12
поделиться
  • 1
    Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – Manish 21 July 2015 в 02:42
  • 2
    Хорошо, это хороший совет. Спасибо. :) – Nicholas Brown 31 July 2015 в 00:16

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

ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.single_item, eatables);
1
ответ дан Rajat Ghai 15 August 2018 в 21:12
поделиться

Ответ на ваш вопрос: android.R.id.text1 is 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);

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

1
ответ дан Sahan Pasindu Nirmal 15 August 2018 в 21:12
поделиться
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

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

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

3
ответ дан TroyHaskin 15 August 2018 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: