Доступ к представлениям Android на вложенных макетах - PullRequest
2 голосов
/ 28 декабря 2011

У меня проблемы с доступом к представлениям из макета, включенного в другой макет.Пожалуйста, взгляните на это изображение:

http://dl.dropbox.com/u/3473245/layout_includes.png

Как получить доступ к 4 текстовым представлениям программно?Это, наверное, что-то действительно простое, что я скучаю.Большое спасибо!

Ответы [ 2 ]

8 голосов
/ 20 января 2012

Вы можете сделать следующее:

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <include android:id="@+id/item_base_lang" layout="@layout/dictionary_list_item" />
    <include android:id="@+id/item_learn_lang" layout="@layout/dictionary_list_item" />
</LinearLayout>

dictionary_list_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/dictionary_list_item_text_header"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/dictionary_list_item_text_content"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

Чтобы установить текст программно:

((TextView)findViewById(R.id.item_base_lang).findViewById(R.id.dictionary_list_item_text_header)).setText("item_base_lang_header");
((TextView)findViewById(R.id.item_base_lang).findViewById(R.id.dictionary_list_item_text_content)).setText("item_base_lang_content");
((TextView)findViewById(R.id.item_learn_lang).findViewById(R.id.dictionary_list_item_text_header)).setText("item_learn_lang_header");
((TextView)findViewById(R.id.item_learn_lang).findViewById(R.id.dictionary_list_item_text_content)).setText("item_learn_lang_content");

На этой вики-странице Android показано, как использовать повторно используемые компоненты пользовательского интерфейса с макетами XML, но не показано, как получить доступ к вложенным повторно используемым компонентам из кода.

Хотя это довольно просто, это может быть не очень понятно для тех, кто довольно плохо знаком с представлениями Android.

2 голосов
/ 29 декабря 2011

Следующие две строки должны помочь вам получить languageHeader обоих включений.То же самое можно сделать для languageText

findViewByid (R.id.activityBaseLangView) .findViewById (R.id.languageHeader) findViewByid (R.id.activityLearnLangView) .findViewById (R.id.languageHeader)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...