有人能帮我吗?我想从firebase获得数据,所有的代码都是绿色的,但是当我试图移动到IOT片段时,它被迫关闭,错误是:java.lang.NullPointerException: itemView.findViewById(R.id.tv_percent) must not be null
。
这是我的IOT片段
class IOTFragment : Fragment() {
private var _binding: FragmentIotBinding? = null
private val binding get() = _binding!!
private lateinit var sensorRecyclerView: RecyclerView
private lateinit var sensorList: ArrayList<Sensor>
private lateinit var dbRef: DatabaseReference
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = FragmentIotBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
sensorRecyclerView = binding.sensorView
sensorRecyclerView.layoutManager = LinearLayoutManager(requireActivity())
sensorRecyclerView.setHasFixedSize(true)
sensorList = arrayListOf()
getSensorData()
}
private fun getSensorData(){
// sensorRecyclerView.visibility = View.GONE
dbRef = FirebaseDatabase.getInstance().getReference("Sensor")
dbRef.addValueEventListener(object :ValueEventListener{
override fun onDataChange(snapshot: DataSnapshot) {
sensorList.clear()
if (snapshot.exists()){
for (sensorSnap in snapshot.children){
val sensorData = sensorSnap.getValue(Sensor::class.java)
sensorList.add(sensorData!!)
}
val mAdapter = SensorAdapter(sensorList)
sensorRecyclerView.adapter = mAdapter
//
// sensorRecyclerView.visibility = View.VISIBLE
}
}
override fun onCancelled(error: DatabaseError) {
TODO("Not yet implemented")
}
})
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
我的传感器适配器
class SensorAdapter(private val sensorList: ArrayList<Sensor>) :
RecyclerView.Adapter<SensorAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val itemView = LayoutInflater.from(parent.context).inflate(R.layout.fragment_iot, parent, false)
return ViewHolder(itemView)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val currentSensor = sensorList[position]
holder.tvValueSensor.text = currentSensor.data
holder.tvNameSensor.text = currentSensor.name
}
override fun getItemCount(): Int {
return sensorList.size
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val tvValueSensor : TextView = itemView.findViewById(R.id.tv_percent)
val tvNameSensor : TextView = itemView.findViewById(R.id.tittle_parameter)
}
}
我的数据类传感器
@Parcelize
data class Sensor(
var data:String? = "",
var name:String? = ""
):Parcelable
最后一次我的Firebase 在这里输入图像描述
这就是我的全部代码,希望有人能帮我,谢谢你
发布于 2022-06-14 20:59:54
从错误来看,我认为您的布局fragment_iot
不包含ID tv_percent
的视图。如果是这样的话,您也应该添加布局代码。
https://stackoverflow.com/questions/72623259
复制相似问题