大家好,这是我第一次接触 livedata,如果你能帮我找出这个观察者的问题,我将不胜感激
我的 MainActivity 中的观察者部分无法接收任何东西,从我的 Dialogfragment 和 MainModel 类到 MainViewModel 一切都很好,我已经触发了日志,但 MainActivity 中的观察者没有任何反应
class MainModel {
private var resultLiveData = MutableLiveData<List<Course>>()
private val courseList = ArrayList<Course>()
private val mainViewModel = MainViewModel()
fun sum(course: Course) {
courseList.add(course)
resultLiveData.value = courseList
Log.d("tag", "$course in model")
mainViewModel.loadedResult(resultLiveData)
Log.d("tag", "${resultLiveData.value} in my model")
}
}
class MainViewModel : ViewModel() {
var result = MutableLiveData<List<Course>>()
fun loadedResult(resultData: MutableLiveData<List<Course>>) {
result = resultData
Log.d("tag", "main viewModel ${result.value}")
Log.d("tag", "main viewModel ${resultData.value}")
}
}
class MainActivity : AppCompatActivity() {
private lateinit var fragmentManager: FragmentManager
private lateinit var linearLayoutManager: LinearLayoutManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
linearLayoutManager = LinearLayoutManager(this)
mainRecyclerView.layoutManager = linearLayoutManager
fragmentManager = supportFragmentManager
setupLivedata()
floatingActionButton.setOnClickListener {
showAddDialog()
}
}
private fun setupLivedata() {
val mainViewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
var myList : ArrayList<Course>
var myObserver = Observer<List<Course>> {
observedList -> myList = observedList as ArrayList<Course>
Log.d("tag", "${myList.size} reached main activity")
Log.d("tag", "${observedList.size} reached main activity")
}
mainViewModel.result.observe(this, myObserver)
}
private fun showAddDialog() {
val inputDialog = InputDialogFragment()
inputDialog.show(supportFragmentManager, "input")
}
}