Как textViewResourceId назначается android при использовании ArrayAdapter - PullRequest
0 голосов
/ 17 марта 2020

Я новичок в Android, так что простите, если это очевидно, я все еще пытаюсь понять рабочий процесс. Я следую учебному пособию и создал listView и ArrayAdapter.

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

Затем мне стало любопытно взглянуть на конструктор ArrayAdapter. В конструкторе textViewResourceId имеет значение 0 .

public ArrayAdapter(@NonNull Context context, @LayoutRes int resource,
            @NonNull List<T> objects) {
     //Here textViewResourceId is set to 0     
     this(context, resource, 0, objects);
}

Затем я посмотрел на источник android .R.layout.simple_list_item_1 . В этот момент я ожидал, что id @ android: id / text1 будет 0 , но когда я его проверил, редактор покажет мне public static final int text1 = 16908308

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:minHeight="?android:attr/listPreferredItemHeightSmall" />

Я здесь что-то не так, кто-нибудь может кратко объяснить мне, что здесь происходит? Спасибо.

1 Ответ

0 голосов
/ 17 марта 2020

Я посмотрел дальше на исходный код и выяснил причину. Я был бы счастлив, если это кому-нибудь поможет.

       if (mFieldId == 0) {
            //  If no custom field is assigned, assume the whole resource is a TextView
            text = (TextView) view;
       } else {
             //  Otherwise, find the TextView field within the layout
            text = view.findViewById(mFieldId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...