android - 在 Android 的一项活动中,两个回收站视图之间共享价值
问题描述
如何在两个 RecyclerView 之间共享价值?那是在一个活动中吗?下面是我的代码,只有一个 RecyclerView 绑定。没关系,我理解它是如何工作的。我想在同一页面中添加另一个 RecyclerView。两个 RecyclerView 都是表。当用户单击第一个 RecyclerView 中的项目时,第二个 RecyclerView 中的任何内容都发生了变化。Repository 通常从 Room 数据库返回数据列表。我欣赏的是一些代码示例,或者可能是一些带有示例的教程。
这是 MainActivity.kt
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
private val oneViewModel: OneViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMaindBinding.inflate(layoutInflater)
setContentView(binding.root)
val recyclerViewOneAdapter = RecyclerViewOneAdapter ()
binding.apply {
recyclerViewOneAdapter.apply {
adapter = Adapter
layoutManager = LinearLayoutManager(this@MainActivity)
}
oneViewModel.getItems.observe(this@MainActivity){
adapter.submitList(it)
}
}
}
}
这是 ViewModel 示例
@HiltViewModel
class OneViewModel @Inject constructor(
repository: SybaseRepository
): ViewModel(){
val getItems = repository.getAllItemsFromDatabase().asLiveData()
}
我的建议是这样的:
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
private val oneViewModel: OneViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMaindBinding.inflate(layoutInflater)
setContentView(binding.root)
val recyclerViewOneAdapter = RecyclerViewOneAdapter ()
val recyclerViewSecondAdapter = RecyclerViewSecondAdapter()
binding.apply {
recyclerViewOneAdapter.apply {
adapter = recyclerViewOneAdapter
layoutManager = LinearLayoutManager(this@MainActivity)
}
oneViewModel.getFirstItems.observe(this@MainActivity){
adapter.submitList(it)
}
recyclerViewTwoAdapter.apply {
adapter = recyclerViewSecondAdapter
layoutManager = LinearLayoutManager(this@MainActivity)
}
oneViewModel.getSecondItems.observe(this@MainActivity){
adapter.submitList(it)
}
}
}
}
这是 ViewModel 示例
@HiltViewModel
class OneViewModel @Inject constructor(
repository: SybaseRepository
): ViewModel(){
val getFirstItems = repository.getFirsttemsFromDatabase().asLiveData()
val getSecondItems = repository.getSecondItemsFromDatabase().asLiveData()
}
我错过了什么吗?还是正确的方法?
解决方案
推荐阅读
- windows - Docker 服务任务在 Windows 上重新启动后停留在准备状态
- excel - 使用VBA在Excel填充单元格中插入多个图像,但保持纵横比
- java - 在java中识别像素的颜色
- sql - 在事务期间更新依赖表时出现“外键约束失败”
- javascript - 动作必须具有类型属性
- python - Repartition() 导致火花作业失败
- apache - 让 .htaccess 从一个域重定向到另一个域以适用于 WWW(http://www. 和 https://www.)、HTTP 和 HTTPS
- python - PyTorch 中具有模型并行性的共享权重
- angular - 如果它在角度中具有空值,则绕过
- ios - Obj-C-检测textView换行符?