当前位置: 首页 > 知识库问答 >
问题:

如何将RecolyerView中的Firebase数据传递给第二个活动

邢飞白
2023-03-14

类BookDescription:AppCompatActivity(){override fun onCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.Layout.Activity_Book_Description)

    var books = intent.getParcelableExtra("String") as Book
    Glide.with(this).load(books.imageUrl).into(bookImg1)
    nameTxt1.text = books.name
    autorTxt1.text = books.name
} }

类适配器(private val Context:Context):recyclerView.Adapter (){

private var datalist = mutableListOf<Book>()
fun setListdata(data: MutableList<Book>){
    datalist = data
}

inner class Holder(itemView : View) : RecyclerView.ViewHolder(itemView){
     fun bindView(book: Book){
         Glide.with(context).load(book.imageUrl).into(itemView.bookImg)
         itemView.nameTxt.text = book.name
         itemView.autorTxt.text= book.writer

         itemView.bookImg.setOnClickListener(
                 View.OnClickListener {
                     val intent = Intent(context, BookDescription::class.java)
                     intent.putExtra("jbg", book)
                     context.startActivity(intent)
                 }
         )
     }
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
    val view = LayoutInflater.from(context).inflate(R.layout.book_format, parent,

false)返回保持器(查看)}

override fun onBindViewHolder(holder: Holder, position: Int) {
       val book = datalist[position]
       holder.bindView(book)
}

override fun getItemCount(): Int {
   return if (datalist.size> 0){
        datalist.size
    }else{
        0
    }
} }

类MainActivity:AppCompatActivity(){

private lateinit var adapter : Adapter
private val viewModel by lazy { ViewModelProviders.of(this).get(MainViewModel::class.java)}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    adapter = Adapter(this)
    recycle.layoutManager = GridLayoutManager(this,2)
    recycle.adapter = adapter
    observerData()
}

   fun observerData(){
       viewModel.fetchUserData().observe(this,Observer{
           adapter.setListdata(it)
           adapter.notifyDataSetChanged()
       })
   }

}

    null

共有1个答案

柯镜
2023-03-14

您需要确保book类实现了Parcelable,然后确保用于放入额外内容的密钥与用于检索它的密钥匹配:

val intent = Intent(context, BookDescription::class.java)
intent.putParcelable("UNIQUE_KEY", book)
context.startActivity(intent)
var books = intent.getParcelableExtra("UNIQUE_KEY") as Book
 类似资料:
  • 问题内容: 我有一个奇怪的问题。我正在网上浏览,但没有找到答案。我仍然是android编程的初学者。让我们开始吧: 我要做的就是用一些数据调用第二个Activity。它适用于较小的数据,但是如果数据变大,则第二个活动将不会显示,第一个活动将结束。这是调用方法的代码: 接收数据的部分并不重要。即使我不尝试阅读捆绑软件,也不会调用该活动。我用以下几行进行了测试: 永远不会被调用。 也许您有一个主意…谢

  • 我有三节课 1.菜单活动 2.LocationUpdateService 3.多重标记器 1.菜单活动 2、LocationUpdateService:(这是服务类) 3、多重标记(活动) 我的问题是:当我打开我的菜单活动我的Toast消息打印发送数据到广播接收器,然后点击按钮我调用MultipleMarker。我无法从服务中获取值。。。但当我按下后退按钮时,我重定向到MenuActivity,此

  • 我想把数据RC_1RC_2。我怎么能这样做(猫,信息,orderid)回收站视图到回收站视图?Examp.pic_1 我的firebase节点与图片类似。我的firebase节点 //RC_1结构 //RC_2结构 RC_1用于//我的活动1 RC_1;//Myadapter_1 @在BindViewHolder上重写公共无效(@NonNull ViewHolder持有者,@SuppressLin

  • 我想把<代码>工作流程。睡眠调用我的Cadence活动之一,以便能够正确测试它(并模拟function产生的错误结果)。 在实现之前,我注意到两件重要的事情: 和是单独的类型。 每个活动的第一个参数 - - 是可选的,可以省略 我的尝试: 1.首次尝试 错误: "error":"无法解码活动函数输入字节错误:无法解码参数:0,*internal.Context,json错误:json:无法将对象散

  • 根据教程中的示例使用XamarinStudio和下面的代码。这里是问题。 null 谢谢