1

LayoutInflaterこのビューを複数回 (動的に) 必要に応じて使用して、xml を膨らませています。

私の ònCreate` メソッドは次のとおりです。

 protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.home);
                    v[i]= new View[4];
            LinearLayout linear= (LinearLayout) findViewById(R.id.linearLayout);
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            for(int i = 1; i <4; i++) {

             v[i]= inflater.inflate(R.layout.row, linear);                         //v[i] returns view i.e. Linear Layout from my row.xml 
            }   
        }

私のrow.xmlのコードは次のとおりです-

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#ffaf04"
    android:orientation="horizontal"
    android:padding="10dip" >

    <LinearLayout
        android:id="@+id/rel1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:background="#ffffff"
        android:orientation="vertical"
        android:padding="5dp" >

        <ImageView
            android:id="@+id/imageView1inInflatedRow"
            android:layout_width="130dp"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:src="@drawable/image_holder" >
        </ImageView>

        <Button
            android:id="@+id/button1inInflatedRow"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginTop="5dp"
            android:background="@layout/button_selector"
            android:padding="5dip"
            android:textColor="#FFFFFF"
            android:textSize="12sp" >
        </Button>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:background="#ffffff"
        android:orientation="vertical"
        android:padding="5dp" >

        <ImageView
            android:id="@+id/imageView2inInflatedRow"
            android:layout_width="130dp"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:src="@drawable/image_holder" >
        </ImageView>

        <Button
            android:id="@+id/button2inInflatedRow"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginTop="5dp"
            android:background="@layout/button_selector"
            android:padding="5dip"
            android:textColor="#FFFFFF"
            android:textSize="12sp" >
        </Button>
    </LinearLayout>

</LinearLayout>

行にボタンが含まれるようになりました。ボタンの onclick リスナーを設定したいと思います。つまり、 forbutton1inInflatedRowbutton2inInflatedRowhich は同じ機能を実行しますが、どのボタンがその機能を呼び出したかを知る必要があります。findVieById()では、これらのボタンを呼び出すにはどうすればよいでしょうか。または、ボタンを呼び出す他の方法はありonclickますか..?

4

4 に答える 4

1

(私の知る限り)行を膨らませる最良の方法は次のとおりです-

 View v[i] = inflater.inflate(R.layout.row, null); 
    linear.addView(v[i]);

この v は、row.xml で膨張したビューを返します。したがって、ボタンに次のようにアクセスできます

photoButton[i]=(Button) v[i].findViewById(R.id.button1inInflatedRow);

私が間違っていたところ---私は使用していました

View v[i] = inflater.inflate(R.layout.row, linear);

この V[i] は親レイアウトであるため、ボタンにアクセスできませんでした

(Button) v[i].findViewById(R.id.button1inInflatedRow)

于 2013-07-10T09:17:13.583 に答える