我是 Kotlin 的新手,我有這個 Kotlin 代碼,加載的資料一開始沒有顯示,但在導航到另一個活動并回傳資料后會出現。在網上我檢查過他們說要添加 notifyOnChnaged 但我無法實作它,如果您知道如何添加notifyOnChanged或任何其他解決方案,請幫助我。
class SecretsActivity : AppCompatActivity() {
lateinit var bind : ActivitySecretsBinding
override fun onCreate(savedInstanceState: Bundle?) {
val secretsList = firebaseSecretsData()
super.onCreate(savedInstanceState)
bind = ActivitySecretsBinding.inflate(layoutInflater)
setContentView(bind.root)
bind.secretsRecyclerView.adapter = SecretsAdapter(secretsList)
bind.secretsRecyclerView.layoutManager = StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)
bind.secretsRecyclerView.setHasFixedSize(true)
bind.secretsRecyclerView.adapter = SecretsAdapter(secretsList)
bind.ButtonWrite.setOnClickListener {
val intent = Intent(this, WriteActivity::class.java)
startActivity(intent)
overridePendingTransition(R.transition.fadein, R.transition.fadeout)
finish()
}
}
override fun onBackPressed() {
super.onBackPressed()
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
overridePendingTransition(R.transition.fadein, R.transition.fadeout)
finish()
}
private fun firebaseSecretsData() : List<SecretsModel>{
val list = ArrayList<SecretsModel>()
val dbref = FirebaseDatabase.getInstance().getReference("Secrets")
dbref.addValueEventListener(object : ValueEventListener{
override fun onDataChange(snapshot: DataSnapshot) {
if(snapshot.exists()){
for(i in snapshot.children){
val item = SecretsModel(i.value.toString())
list =item
}
}
}
override fun onCancelled(error: DatabaseError) {
TODO("Not yet implemented")
}
})
return list
}
}
uj5u.com熱心網友回復:
//Initialize this first
val myAdapter = SecretsAdapter(secretsList)
. . . . .
private fun firebaseSecretsData() : List<SecretsModel>{
val list = ArrayList<SecretsModel>()
val dbref =
FirebaseDatabase.getInstance().getReference("Secrets")
dbref.addValueEventListener(object : ValueEventListener{
override fun onDataChange(snapshot: DataSnapshot) {
if(snapshot.exists()){
for(i in snapshot.children){
val item = SecretsModel(i.value.toString())
list =item
}
//Add this code
myAdapter.notifyDataSetChanged()
}
}
. . . . .
此外,DiffUtil出于性能原因,您應該盡可能使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/395727.html
