添加多个cardview

时间:2018-06-02 16:55:42

标签: android

我正在尝试在我的布局中拥有动态数量的卡片视图。为了测试我试图在我的布局中插入3张卡片视图,但是只有一张卡片添加了“你好3”写在其上。 这是我的活动代码。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    int i;
    LinearLayout layout=(LinearLayout)findViewById(R.id.mainl);

    for(i=1;i<=3;i++)
    {
        setContentView(R.layout.card);
        LayoutInflater layoutInflater=(LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final View addView=layoutInflater.inflate(R.layout.card,null);
        TextView t=(TextView)findViewById(R.id.text1);
        t.setText("hello "+String.valueOf(i));
        layout.addView(addView);

    }

}

} `

cardlayout的代码

<android.support.v7.widget.CardView
android:id="@+id/cardv"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_height="50dp"
android:layout_width="match_parent"
android:layout_margin="10dp"
card_view:cardCornerRadius="10dp">
<TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="25dp"
    android:text="Hello"
    android:layout_gravity="center"/>

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

对于contentmain

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".MainActivity"
tools:showIn="@layout/activity_main"
android:orientation="vertical"
android:id="@+id/mainl">

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

因为在循环周期中,您设置每个循环的内容视图。 请删除此行setContentView(R.layout.card); 所以你的onCreate()方法将如下所示:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    int i;
    LinearLayout layout=(LinearLayout)findViewById(R.id.mainl);

    for(i=1;i<=3;i++)
    {
        LayoutInflater layoutInflater=(LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final View addView=layoutInflater.inflate(R.layout.card,null);
        TextView t=(TextView) addView.findViewById(R.id.text1);
        t.setText("hello "+String.valueOf(i));
        layout.addView(addView);

    }

}