📅  最后修改于: 2023-12-03 15:07:20.623000             🧑  作者: Mango
如果您正在使用 Firebase 数据库并希望在 RecyclerView 中显示记录并允许用户单击其中一个以打开另一个活动,则可以遵循以下步骤。
buildscript {
dependencies {
// add the Firebase Core SDK and Firebase UI SDK
classpath 'com.google.firebase:firebase-core:19.0.0'
classpath 'com.firebaseui:firebase-ui-database:6.2.0'
}
}
dependencies {
// add Firebase and RecyclerView libraries
implementation 'com.google.firebase:firebase-database:19.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
}
使用 RecyclerView 和 ViewHolder 显示 Firebase 数据库中的记录。以下是一个示例 ViewHolder。
class RecordViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
// define views in the layout
val nameTextView: TextView = itemView.findViewById(R.id.nameTextView)
val descriptionTextView: TextView = itemView.findViewById(R.id.descriptionTextView)
val imageView: ImageView = itemView.findViewById(R.id.imageView)
// define bind function to bind data to the views
fun bind(record: Record) {
nameTextView.text = record.name
descriptionTextView.text = record.description
Picasso.get().load(record.image).into(imageView)
}
}
使用 FirebaseRecyclerAdapter 来连接 RecyclerView 和 Firebase 数据库。以下是一个示例 FirebaseRecyclerAdapter。
class RecordAdapter(database: DatabaseReference) : FirebaseRecyclerAdapter<Record, RecordViewHolder>(
FirebaseRecyclerOptions.Builder<Record>()
.setQuery(database, Record::class.java)
.build()
) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecordViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.record_item, parent, false)
return RecordViewHolder(view)
}
override fun onBindViewHolder(holder: RecordViewHolder, position: Int, record: Record) {
holder.bind(record)
// handle click event
holder.itemView.setOnClickListener {
val context = holder.itemView.context
val intent = Intent(context, AnotherActivity::class.java)
intent.putExtra("record_id", getRef(position).key)
context.startActivity(intent)
}
}
}
注意,我们在 onBindViewHolder 函数中添加了一个单击事件处理程序,以处理单击 RecyclerView 中的记录,并打开另一个活动。您可以将 "record_id" 替换为您需要的键。
将您的 RecyclerView 和 Adapter 连接起来。
class MainActivity : AppCompatActivity() {
private lateinit var database: DatabaseReference
private lateinit var adapter: RecordAdapter
private lateinit var recyclerView: RecyclerView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// get database reference
database = FirebaseDatabase.getInstance().getReference("records")
// create adapter
adapter = RecordAdapter(database)
// get RecyclerView reference and set adapter
recyclerView = findViewById(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(this)
recyclerView.adapter = adapter
}
override fun onStart() {
super.onStart()
adapter.startListening()
}
override fun onStop() {
super.onStop()
adapter.stopListening()
}
}
在 MainActivity 中,我们创建了一个 RecordAdapter,并将其设置为 RecyclerView 的适配器。并且我们在 onStart 和 onStop 函数中启动和停止监听器。
现在,当用户单击 RecyclerView 中的记录时,将打开 AnotherActivity,并传递所选记录的键。
这是一个完整的示例,您可以根据需要进行更改和定制。
注意: Firebase UI SDK 只支持特定版本的 Firebase SDK。请确保您在 app-level build.gradle 中使用与 Firebase UI SDK 版本匹配的 Firebase SDK 版本。