我正在尝试在一个活动中填充两个或多个回收者视图,该过程对于一个视图可以正常工作,但是当我添加另一个视图时,它便崩溃了。
有人可以看看我做错了什么吗?我知道目前我的做法不是最佳实践,也不是有效的方法。
我在活动中的代码
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"/>