При динамическом создании элементов управления, как получить к ним доступ, если нет.управления неизвестен - PullRequest
0 голосов
/ 07 августа 2011

Я создал составной элемент управления с textview и 3 кнопками.Он отлично работает, когда я добавляю его в макет с использованием XML.Но это нужно добавить его с помощью кода Java во время выполнения.Когда я пытаюсь добавить его, используя код Java, другие элементы управления видны, но мой составной элемент управления не отображается.

COmpound Control XML

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

>
    <TextView android:id="@+id/msg_title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="SAMPLE MESSAGE TITLE"
    />
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    >
        <Button android:id="@+id/btn_shw"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="SHOW MSG"
            android:layout_weight="1"
        />
        <Button android:id="@+id/btn_dis"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text=" DISABLE"
            android:layout_weight="1"
        />
        <Button android:id="@+id/btn_del"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text=" DELETE "
            android:layout_weight="1"
        />
    </LinearLayout>    
</LinearLayout>

JAVA-код, используемый для добавления элементов управления

package deepak.android.remainder;

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;

public class RemainderList extends Activity 
{
    ScrollView sv1;
    LinearLayout ll1;
    deepak.android.remainder.RemainderControl rc1;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        sv1=new ScrollView(this);
        ll1=new LinearLayout(this);
        ll1.setOrientation(LinearLayout.VERTICAL);
        sv1.addView(ll1);

        TextView tv1=new TextView(this);
        tv1.setText("THIS IS SAMPLE TEXT");
        ll1.addView(tv1);

            **LinearLayout.LayoutParams lp;
            lp=new LineararLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);** 

        for(int i=0;i<5;i++)
        {
            rc1=new deepak.android.remainder.RemainderControl(this);
            **ll1.addView(rc1,lp);**

        }

        setContentView(sv1);
    }
}

1 Ответ

0 голосов
/ 09 августа 2011

Вы можете сделать запрос к определенным (пронумерованным) дочерним элементам ll1 (LinearLayout).Например,

View child1 = ll1.getChildAt(0);
View child2 = ll1.getChildAt(1);
// and so on...

Конечно, вам нужно будет выполнить нулевую проверку и проверку instanceof, прежде чем вы сможете разыграть и использовать детей.

...