【问题标题】:Iimpalement share intent, using Firebase recycler adapterIimpalement 共享意图,使用 Firebase 回收器适配器
【发布时间】:2020-10-21 08:32:50
【问题描述】:

我正在使用 FirebaseRecylcerAdapter,尝试使用共享意图将我的 RecylcerView 的图像或数据共享给其他应用

下面是我的适配器,我试图在其中获取按钮 onclick:

  private fun ShowData() {
   var tip =  mfirebasedatabase!!.getReference("Model").orderByChild("a")
    options = FirebaseRecyclerOptions.Builder<Model>().setQuery(tip, Model::class.java).build()
    mfirebaseRecyclerAdapter = object : FirebaseRecyclerAdapter<Model, ViewHolder>(options!!) {
        override fun onBindViewHolder(viewHolder: ViewHolder, i: Int, model: Model) {
            viewHolder.setDetails(applicationContext, model.image, model.title)
        }

        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
            val itemview = LayoutInflater.from(parent.context).inflate(R.layout.row, parent, false)
            val viewHolder = ViewHolder(itemview)
            var sh :Button = itemview.findViewById<Button>(R.id.buttontoShare)
            sh.setOnClickListener {
              // how to get the Model.image so that i can implement
                //share intent to share data to other apps?

            }

请帮助我了解如何从那里获取对象

【问题讨论】:

    标签: java android firebase firebase-realtime-database android-intent


    【解决方案1】:

    您在onBindViewHolder() 方法中作为参数获得的model 对象不能在onCreateViewHolder() 方法中使用,因为它超出了范围。如果您需要在sh 按钮上设置点击侦听器,请将其设置在ViewHolder 类而不是onCreateViewHolder 方法中。通过这种方式,您可以访问model 对象,因为之前已经发送到该类,当您使用时:

    viewHolder.setDetails(applicationContext, model.image, model.title)
    

    这样,您可以附加侦听器并将单击的对象发送到下一个活动。但是,解决此问题的更合适的方法是使用回调,如repo 中所述。

    【讨论】:

    • 嘿,普拉纳夫!您是否尝试过我上面的解决方案?如果您认为我的回答对您有所帮助,请考虑采纳(✔️)。我真的很感激。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    相关资源
    最近更新 更多