【问题标题】:How to pass Firebase data in RecyclerView to second Activity如何将 RecyclerView 中的 Firebase 数据传递给第二个 Activity
【发布时间】:2021-06-12 06:58:20
【问题描述】:

第二个活动

类 BookDescription : AppCompatActivity() { 覆盖 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
} }

适配器类

类适配器(私有 val 上下文:上下文): 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,

假) 返回持有人(查看) }

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()
       })
   }

}

课本

@Parcelize 数据类 Book(val imageUrl:String="URL IImage", val name:String = "纳粹 knjige", val writer:String="Pisac knjige") :Parcelable!

【问题讨论】:

    标签: android firebase kotlin android-recyclerview


    【解决方案1】:

    您需要确保您的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
    

    【讨论】:

    • 完成但仍然没有数据传输,应用程序崩溃。 @瑞安
    • 能否提供崩溃日志?
    • 插入了一张照片(logcat)。当您单击 recyclerView 切换到另一个活动时,应用程序崩溃。@Ryan
    • 你确定onClickListener里面的book不是null吗?
    • 是的,我设置了一个断点,一切都很好,直到我开始为新活动创建意图。 @瑞安
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    相关资源
    最近更新 更多