Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing Android views on nested layouts

I have trouble accessing Views from a layout that is included in another layout. Please take a look at this picture:

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

How do I access the 4 text views programmatically? Its probably something really simple that I'm missing. Thank you very much!

like image 247
fusion44 Avatar asked Dec 17 '22 05:12

fusion44


1 Answers

You can do as follows:

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>

To set the text programmatically:

((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");

This Android wiki page shows how to use reusable UI components with XML layouts, but it doesn't show how to access nested reusable components from code.

Although it is fairly straightforward, it might be not so clear for those who are pretty new to Android Views.

like image 141
Lorenzo Polidori Avatar answered Jan 10 '23 19:01

Lorenzo Polidori