android - 通过应用栏中的选择进行排序后,如何重新膨胀列表片段
问题描述
我有一个在列表片段中显示得很好的项目列表。但是,我在应用程序栏中添加了一个排序按钮,但我无法让使用的数据显示(或重新膨胀)。
这个片段列表 Kotlin 类成功调用 actionListViewModel.sortActions()
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.new_action -> {
val action = Action()
actionListViewModel.addAction(action)
callbacks?.onActionSelected(action.id)
true
}
R.id.sort_actions -> {
actionListViewModel.sortActions()
true
}
else -> return super.onOptionsItemSelected(item)
}
}
列表视图模型功能:
fun sortActions(){
actionRepository.getSortedActions()
Log.d(TAG, "tried to sort")
// How do I redisplay?
}
我的存储库代码:
有趣的 getSortedActions(): LiveData<List> = actionDao.getSortedActions()
我的道代码:
@Query("SELECT * FROM action ORDER BY title")
fun getSortedActions(): LiveData<List<Action>>
解决方案
我修好了它。
我更新的 sortActions 函数:
有趣的 sortActions(){ actionRepository.getSortedActions()
if (sortedItems == true) {
actionListLiveData = actionRepository.getSortedActions()
sortedItems = false
}
else {
actionListLiveData = actionRepository.getActions()
sortedItems = true
}
}
操作存储库代码:
fun getActions(): LiveData<List<Action>> = actionDao.getActions()
fun getSortedActions(): LiveData<List<Action>> = actionDao.getSortedActions()
当然,链接到道:
@Query("SELECT * FROM action ORDER BY dueDate")
fun getActions(): LiveData<List<Action>>
@Query("SELECT * FROM action ORDER BY title")
fun getSortedActions(): LiveData<List<Action>>
在我的片段列表中,我添加了:
fun reInflate() {
val fragTransaction: FragmentTransaction = this.fragmentManager!!.beginTransaction()
fragTransaction.detach(this)
fragTransaction.attach(this)
fragTransaction.commit()
}
推荐阅读
- ios - Draw multiple lines in Swift 4
- python - 在一个数据帧中查找符号并将其替换为来自数千列的另一个数据帧的值
- javascript - 捕获特定 DOM 元素的屏幕截图 (vanllla js)
- tensorflow - 在估计器模型函数中使用 tf.cond() 在 TPU 上训练 WGAN 会导致 global_step 加倍
- java - 如何切换 ImageView 按钮
- python - 如何制作一个可以在 Qt 中将其行折叠成类别的表格?
- stackdriver - 如何获取发布到主题的消息总数?
- coq - Coq 证明中的省略号是什么意思?
- apache-kafka-streams - KafkaStream KTable 转储
- android - 删除在 Android Studio 中使用推送创建的 Firebase 实时数据库中的随机第二个孩子