展开式回收站视图和下面的文本视图

时间:2019-03-01 03:57:44

标签: android android-recyclerview

我正在尝试实现带有2个标题的2个可扩展recyclerview。 1。 2。 3。 4。 由于我的recyclerview是可扩展的,因此当我扩展第一个recyclerview时,它将进入我的第二个textview中。 即,在“回收者”视图中有单独的滚动条。

在扩展第一个recyclerview时,我希望第二个textview和recyclerview下移。

activity.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_marginBottom="10dp"
    tools:context=".ListActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:textSize="22sp"
        android:text="Weightage: 40%"/>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#fafafa" />
</LinearLayout>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:textSize="22sp"
        android:layout_marginBottom="10dp"
        android:text="Weightage: 60%"/>
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recview2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#fafafa" />
</LinearLayout>
</ScrollView>

第二个recyclerview也是如此。展开第二个回收站视图时,回收站视图项具有单独的滚动条,并且上面的文本停留在某个位置。总体滚动条不起作用。

1 个答案:

答案 0 :(得分:1)

您只能使用一个Recyclerview来实现。为数据创建一个名为“ Model”的模型类,并在其中添加一个变量,例如“ isHeader”。当您准备要在Recyclerview中显示的数据列表时,请使用 'isHeader = true'

另外,制作两个(item_layout.xml和header_layout.xml)xml文件,一个用于标题,另一个用于原始数据项。

在Recyclerview适配器类中,每个上述布局都有两个单独的ViewHolder类。 refer this for more details and example

public class MultiViewTypeAdapter extends RecyclerView.Adapter {
    public static final int HEADER_VIEW = 0;
    public static final int LIST_VIEW = 1;

    private Resources resources;
    private DownloadListener downloadListener;

    public MyToursAdapter(List<Model> objects) {
        super(objects);
        resources = App.getApp().getResources();
    }

    @NonNull
    @Override
    public RecycleView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if (viewType == HEADER_VIEW) {
            return new SectionHeaderItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.header_layout, parent, false));
        } else
            return new ListItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false));
    }

    @Override
    public void onBindViewHolder(@NonNull BaseRecycleAdapter.ViewHolder holder, int position) {
        if (getItemViewType(position) == HEADER_VIEW)
            ((HeaderItemViewHolder) holder).bindHeaderViewHolder(objects.get(position));
        else
            ((ListItemViewHolder) holder).bindListViewHolder(objects.get(position));
    }

    @Override
    public int getItemViewType(int position) {
        if (objects.get(position).isHeader())
            return HEADER_VIEW;
        else
            return LIST_VIEW;
    }

  public class ListItemViewHolder extends BaseRecycleAdapter.ViewHolder {
     //write code to show data from list object.
  }

  public class HeaderItemViewHolder extends BaseRecycleAdapter.ViewHolder {
     //write code to show data from list object.
  }
}

enter code here