android:展开/折叠recyclerview项

时间:2016-05-11 12:41:00

标签: android android-layout android-recyclerview

我有一个recyclerview列表。 recyclerview中的每个项目都包含以下布局。稍后当点击sample1 id时,sample3.xml应插入sample1和sample2之间。为此,我在此布局中创建了一个带有id insertat的线性布局。

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


    <TextView
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:id="@+id/sample1"
        android:text="Sample1"/>

      <LinearLayout 
      android:orientation="vertical" android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:id="@+id/insertat">
      </LinearLayout>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:id="@+id/sample2"
        android:text="Sample2"/>

</LinearLayout>

onclicking id sample1我想在sample3.xml id insertat中插入布局文件linearlayout

sample3.xml如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/toinsert">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:text="Sample1"
        android:id="@+id/sample3"/>

</LinearLayout>

如何在recyclerview代码中实现此目的。

2 个答案:

答案 0 :(得分:0)

我没有得到确切的要求,但是,如果您希望在点击后只看到视图,您可以通过合并保持您的布局,如下所示,并且可以基于点击事件显示和隐藏。

foverlaps

答案 1 :(得分:0)

首先获得insertat的参考:

LinearLayout insertAtView = (LinearLayout) findViewById(R.id.insertat);

膨胀sample3视图:

View sample3View = getLayoutInflater().inflate(R.layout.sample3, insertAtView, false);

然后将sample3添加到insertat:

insertAtView.addView(sample3View);

完整代码:

findViewById(R.id.sample1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                LinearLayout insertAtView = (LinearLayout) findViewById(R.id.insertat);
                View sample3View = getLayoutInflater().inflate(R.layout.sample3, insertAtView, false);
                insertAtView.addView(sample3View);
            }
        });