【发布时间】:2019-03-13 15:28:22
【问题描述】:
我想使用安卓菜单选项对所有回收站视图数据进行排序。
在主要活动中,我使用这个:
companion object
{
var items = ArrayList<BookContent.BookItem>()
init
{
items.add(BookContent.BookItem(0, "Title 2", "Albert", Date(), "Description 2", ""))
items.add(BookContent.BookItem(1, "Title 4", "Joan", Date(), "Description 4", ""))
items.add(BookContent.BookItem(0, "Title 1", "Laura", Date(), "Description 1", ""))
items.add(BookContent.BookItem(1, "Title 15", "Valeria", Date(), "Description 15", ""))
items.add(BookContent.BookItem(0, "Title 6", "Jensen", Date(), "Description 6", ""))
items.add(BookContent.BookItem(1, "Title 27", "Fran", Date(), "Description 27", ""))
items.add(BookContent.BookItem(0, "Title 32", "Tim", Date(), "Description 32", ""))
items.add(BookContent.BookItem(1, "Title 3", "James", Date(), "Description 3", ""))
items.add(BookContent.BookItem(0, "Title 8", "Marie", Date(), "Description 8", ""))
items.add(BookContent.BookItem(1, "Title 9", "Marta", Date(), "Description 9", ""))
items.add(BookContent.BookItem(0, "Title 44", "Eli", Date(), "Description 44", ""))
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean
{
items = when (item.itemId)
{
R.id.sort_author -> items.sortedWith(compareBy({it.author},{it.author})) as ArrayList<BookContent.BookItem>
R.id.sort_title -> items.sortedWith(compareBy({it.title},{it.title})) as ArrayList<BookContent.BookItem>
else -> ArrayList<BookContent.BookItem>()
}
viewAdapter.notifyDataSetChanged()
return super.onOptionsItemSelected(item)
}
但我收到以下错误:
java.lang.ClassCastException: java.util.Arrays$ArrayList 不能 转换为 java.util.ArrayList
我在方法 onCreate 上创建适配器:
viewManager = LinearLayoutManager(this)
viewAdapter = SimpleItemRecyclerViewAdapter(items)
recyclerView = findViewById<RecyclerView>(R.id.book_recycler_view).apply {
layoutManager = viewManager
adapter = viewAdapter
}
否则,这是更新数据的正确方法吗?
【问题讨论】:
-
你能发布你初始化
items元素的方式吗? -
更新了项目初始化
-
您使用
ArrayList而不仅仅是 KotlinMutableList是否有特定原因?这样你就不用担心强制转换了,让 Kotlin 处理其MutableList的实际实现。 -
与 MutableList 完美结合。
标签: android arraylist android-recyclerview