【问题标题】:RecylerView Data not showingRecyclerView 数据未显示
【发布时间】:2022-01-26 11:56:04
【问题描述】:

我是 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
    }
}

【问题讨论】:

    标签: android kotlin firebase-realtime-database android-recyclerview


    【解决方案1】:
    //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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2020-06-25
    • 1970-01-01
    相关资源
    最近更新 更多