在动态添加的textview XML

时间:2015-08-29 23:57:11

标签: android xml android-layout

我的问题是如何为从xml动态添加的文本视图设置不同的文本,

示例代码:

ViewGroup view = (ViewGroup) findViewById(android.R.id.content);

LinearLayout r = (LinearLayout)findViewById(R.id.test11);

LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for(int i =0 ; i<20 ; i++) {
   r.addView(layoutInflater.inflate(R.layout.mcdonald_card, view, false));
    }

R.layout.mcdonald_card:

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


<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/card_margin">

    <LinearLayout
        style="@style/Widget.CardContent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/test222"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Info"
            android:textAppearance="@style/TextAppearance.AppCompat.Title" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="aaaaaaaaa" />

    </LinearLayout>

</android.support.v7.widget.CardView>

如何更改test222的文本,以便添加的20个文本有不同的文本? 如果不可能,有什么替代方案? 先谢谢你了

1 个答案:

答案 0 :(得分:2)

尝试这样的事情

for(int i =0 ; i<20 ; i++) {
    View view = layoutInflater.inflate(R.layout.mcdonald_card, view, false);
    ((TextView)view.findViewById(R.id.test222)).setText("some text");
    r.addView(view);
}

<强>更新
修改你的xml以包含按钮,如下所示。

<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/card_margin">

    <LinearLayout
        style="@style/Widget.CardContent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/test222"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Info"
            android:textAppearance="@style/TextAppearance.AppCompat.Title" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="aaaaaaaaa" />

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />

    </LinearLayout>

,您的代码应该是

for(int i =0 ; i<20 ; i++) {
    View view = layoutInflater.inflate(R.layout.mcdonald_card, view, false);
    ((TextView)view.findViewById(R.id.test222)).setText("some text");
    ((Button)view.findViewById(R.id.button)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Do whatever you want here on click of button
            }
        });
    r.addView(view);
}