使用groupie在一个活动中填充多个回收者视图

时间:2018-09-02 14:41:48

标签: android android-recyclerview

我正在尝试在一个活动中填充两个或多个回收者视图,该过程对于一个视图可以正常工作,但是当我添加另一个视图时,它便崩溃了。

有人可以看看我做错了什么吗?我知道目前我的做法不是最佳实践,也不是有效的方法。

我在活动中的代码

private var shouldInitRecyclerView = true
private lateinit var testSection: Section
private lateinit var assSection: Section

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_edit_mod)
    FirestoreUtil.addModInfoListener("test","xbIpNiDXGsIPmb5sTwbH", this, this::updateRecyclerViewTest)
    FirestoreUtil.addModInfoListener("assignment","xbIpNiDXGsIPmb5sTwbH", this, this::updateRecyclerViewAss)
}

private fun updateRecyclerViewTest(items: List<Item>) {
    fun init() {
        recycler_view_test.apply {
            layoutManager = LinearLayoutManager(this@EditModActivity)
            adapter = GroupAdapter<ViewHolder>().apply {
                testSection = Section(items)
                add(testSection)
                setOnItemClickListener(onItemClick)
            }
        }
        shouldInitRecyclerView = false
    }

    fun updateItems() = testSection.update(items)

    if (shouldInitRecyclerView)
        init()
    else
        updateItems()
}

private fun updateRecyclerViewAss(items: List<Item>) {
    fun init() {
        recycler_view_ass.apply {
            layoutManager = LinearLayoutManager(this@EditModActivity)
            adapter = GroupAdapter<ViewHolder>().apply {
                assSection = Section(items)
                add(assSection)
                setOnItemClickListener(onItemClick)
            }
        }
        shouldInitRecyclerView = false
    }

    fun updateItems() = assSection.update(items)

    if (shouldInitRecyclerView)
        init()
    else
        updateItems()
}

和布局:

<android.support.constraint.ConstraintLayout 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"
tools:context=".EditModActivity">

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Groups"
    android:layout_marginLeft="8dp"
    android:textStyle="bold"
    android:textSize="20sp"/>

<android.support.v7.widget.RecyclerView
    android:layout_marginTop="8dp"
    android:layout_below="@id/textView"
    android:id="@+id/recycler_view_test"
    android:layout_marginLeft="8dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

<android.support.v7.widget.RecyclerView
    android:layout_marginTop="8dp"
    android:layout_below="@id/recycler_view_test"
    android:id="@+id/recycler_view_ass"
    android:layout_marginLeft="8dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>    

0 个答案:

没有答案