<include> атрибут переопределения тега - PullRequest
5 голосов
/ 21 февраля 2012

Если у меня есть один файл макета => res/layout/item.xml:

<?xml version="1.0" encoding="utf-8"?>            
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="60dp"

>

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="John"
        />

    <TextView  
        android:id="@+id/age"
        android:layout_width="fill_parent"
        android:layout_height="26dip" 
        android:text="29" />
</LinearLayout>

И у меня есть еще один файл макета, содержимое которого включает в себя несколько из вышеуказанного элемента => res/layout/main.xml:

<?xml version="1.0" encoding="utf-8"?>            
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:orientation="vertical"        
    >

    <!--How can I override "name" and "age" attribute in the included item layout-->        

    <include android:id="@+id/student" layout="@layout/tem" />

    <include android:id="@+id/teacher" layout="@layout/item" />

    <include android:id="@+id/other" layout="@layout/item" />

</LinearLayout>

Как вы видите выше, я использую тег <include> для включения того же макета. Но как мне переопределить текстовые значения «name» и «age» во включенном item.xml из main.xml для каждого включенного элемента ??

Ответы [ 2 ]

1 голос
/ 21 февраля 2012
I hope this will work.

View v=(View)findviewbyid(R.id.student);

Textview name=(TextView)v.findviewbyid(R.id.name);

Textview age=(TextView)v.findviewbyid(R.id.age);
0 голосов
/ 21 февраля 2012

измените ваш item.xml следующим образом:

<?xml version="1.0" encoding="utf-8"?>            
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="60dp"

>

    <TextView
        android:tag="item_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="John"
        />

    <TextView  
        android:tag="item_age"
        android:layout_width="fill_parent"
        android:layout_height="26dip" 
        android:text="29" />
</LinearLayout>

Тогда:

//find the container which hold student: 
     ViewGroup containerStudent = findViewById(R.id.student);
   //find the child:
     TextView student_name =(TextView)containerStudent.findViewWithTag("item_name"); 
...