android - 未连接适配器;跳过datalist中的布局问题
问题描述
我得到了错误:
recyclerview 没有附加适配器;跳过布局
而且recyvlerview中的数据根本没有显示。我正在使用 firebase 并想从子“fasilitas”中获取数据,但出现了这样的错误。我应该怎么办?
HotelDetailActivity.kt
class HotelDetailActivity : AppCompatActivity() {
private lateinit var mDatabase : DatabaseReference
private var dataList = ArrayList<FasilitasModel>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_hotel_detail)
val data = intent.getParcelableExtra<Hotel>("data")
mDatabase = FirebaseDatabase.getInstance().getReference("Hotel")
.child(data!!.namaHotel.toString())
.child("fasilitas")
tv_namaHotel.text = data!!.namaHotel
tv_biaya.text = data!!.biaya
tv_deskripsi.text = data!!.deskripsi
tv_lokasi.text = data!!.lokasi
tv_rate2.text = data!!.rating
Glide.with(this)
.load(data.poster)
.into(iv_poster)
rv_fasilitas.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
getData()
}
private fun getData() {
mDatabase.addValueEventListener(object: ValueEventListener{
override fun onDataChange(snapshot: DataSnapshot) {
dataList.clear()
for(getdataSnapshot in snapshot.children){
var Hotel = getdataSnapshot.getValue(FasilitasModel::class.java)
dataList.add(Hotel!!)
}
rv_fasilitas.adapter = FasilitasAdapter(dataList){
}
}
override fun onCancelled(error: DatabaseError) {
Toast.makeText(this@HotelDetailActivity, ""+error.message, Toast.LENGTH_LONG).show()
}
})
}
}
Fasilitas适配器
class FasilitasAdapter(
private var data: List<FasilitasModel>,
private val listener: (FasilitasModel) -> Unit)
: RecyclerView.Adapter<FasilitasAdapter.LeagueViewHolder>() {
lateinit var contextAdapter: Context
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): LeagueViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
contextAdapter = parent.context
val inflatedView: View = layoutInflater.inflate(R.layout.row_item_fasilitas, parent, false)
return LeagueViewHolder(inflatedView)
}
override fun onBindViewHolder(holder: LeagueViewHolder, position: Int) {
holder.bindItem(data[position], listener, contextAdapter, position)
}
override fun getItemCount(): Int = data.size
class LeagueViewHolder(view: View) : RecyclerView.ViewHolder(view) {
private val tvNamaFasilitas: TextView = view.findViewById(R.id.tv_fasilitas)
private val ivFasilitas: ImageView = view.findViewById(R.id.iv_ic_fasilitas)
fun bindItem(data: FasilitasModel, listener: (FasilitasModel) -> Unit, context: Context, position: Int) {
tvNamaFasilitas.text = data.nama
Glide.with(context)
.load(data.url)
.apply(RequestOptions.circleCropTransform())
.into(ivFasilitas)
itemView.setOnClickListener {
listener(data)
}
}
}
}
Fasilitas模型
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class FasilitasModel (
var nama: String ?="",
var url: String ?=""
): Parcelable
酒店模型
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class Hotel (
var biaya: String ?="",
var deskripsi: String ?="",
var lokasi: String ?="",
var namaHotel: String ?="",
var poster: String ?="",
var rating: String ?="",
): Parcelable
Firebase 数据库
RecyclerView 不显示仅发生在“设施”而不是“酒店”上。我在代码中看不到任何红色警告,只有布局未显示,并且 logcat 中出现“未连接适配器;正在跳过”警告。谢谢你 :)
解决方案
推荐阅读
- bash - 清除由 yyyy/mm/dd 分隔的目录
- c# - 如何在服务器端 Blazor 中存储会话数据
- java - MediaStore.Images.Media.insertImage 在尝试获取图像 uri 时返回 null
- java - 使数组的维度灵活
- python - 如何使用 python 在 Windows 中禁用/启用特定的 USB 端口?
- javascript - SyntaxError: 位置的 JSON 中的意外标记}
- angularjs - 未触发 CORS 检查的飞行前请求
- reactjs - 如何在我的 React 应用程序中使用谷歌地图方向 API 计算 2 点之间的路线而不显示地图?
- java - 将两个通配符 hashmap 组合成一个通配符 hashmap
- vue.js - 为什么 Vue.js 没有构建到生产版本?