package com.example.android.finalproject
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.firebase.ui.database.FirebaseRecyclerAdapter
import com.firebase.ui.database.FirebaseRecyclerOptions
import com.google.firebase.database.*
import kotlinx.android.synthetic.main.department_view.view.*
/**
* A simple [Fragment] subclass.
*/
class RecyclerViewFragment : Fragment() {
lateinit var ref: DatabaseReference
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val root = inflater.inflate(R.layout.fragment_recycler_view, container, false)
ref = FirebaseDatabase.getInstance().getReference().child("Departments")
val deptRecyclerView = root.findViewById<RecyclerView>(R.id.recycler_view)
deptRecyclerView.layoutManager = LinearLayoutManager(activity!!,RecyclerView.VERTICAL,false)
firebaseData(ref,deptRecyclerView)
return root
}
private fun firebaseData(ref: DatabaseReference, deptRecyclerView: RecyclerView?) {
val option = FirebaseRecyclerOptions.Builder<deptData>()
.setQuery(ref,deptData::class.java)
.setLifecycleOwner(this)
.build()
val firebaseRecyclerAdapter =
object : FirebaseRecyclerAdapter<deptData, MyViewHolder>(option) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val itemView =
LayoutInflater.from(activity).inflate(R.layout.department_view, parent, false)
return MyViewHolder(itemView)
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int, model: deptData) {
val placeid = getRef(position).key.toString()
holder.setdata(placeid,position)
ref.child(placeid).addValueEventListener(object : ValueEventListener {
override fun onCancelled(p0: DatabaseError) {
Toast.makeText(
activity,
"Error Occurred " + p0.toException(),
Toast.LENGTH_SHORT
).show()
}
override fun onDataChange(p0: DataSnapshot) {
holder.txt_name.setText(model.name)
}
})
}
}
deptRecyclerView!!.adapter = firebaseRecyclerAdapter
firebaseRecyclerAdapter.startListening()
class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
}
inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
{
fun setdata(placeid: String,pos:Int) {
itemView.department_name.text=placeid
}
init{
itemView.setOnClickListener(View.OnClickListener {
val tempInt = 1
println(itemView.department_name.text)
val intent= Intent(this,CourseFragment::class.java)
/*if(myListener != null){
if(adapterPosition != androidx.recyclerview.widget.RecyclerView.NO_POSITION){
myListener!!.onItemClickedFromAdapter(items[adapterPosition])
}
}*/
})
}
internal var txt_name: TextView = itemView.findViewById(R.id.department_name)
}
}
我必须从当前片段中调用另一个片段。我正打算这样做。我还需要将变量传递给片段。我有一个需要发送到新片段的变量。是否有其他替代方法可以达到目的。传递意图中的第一个参数时出错