我想用我的firebase数据库中的图像填充我的RecyclerView。我正在为我的RecyclerView适配器使用Groupie。我的适配器类如下所示
class HobbiesAdapter(val hobbyItem: HobbiesClass): Item<GroupieViewHolder>(){
override fun bind(viewHolder: GroupieViewHolder, position: Int) {
viewHolder.itemView.hobbynameTV.text = hobbyItem.hobbyName
//viewholder.itemView.hobbyImageView ...
}
override fun getLayout(): Int {
return R.layout.row
}
}
@Parcelize
class HobbiesClass (val hobbyName:String):Parcelable{
constructor():this("")
}
下面是我的RecyclerView项目行xml文件:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="164dp"
android:layout_height="70dp"
android:layout_marginStart="5dp"
android:background="@android:color/transparent"
xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout
android:id="@+id/frameHobby"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/hobbiesbackground">
<TextView
android:id="@+id/hobbynameTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Camping"
android:textColor="#000000"
android:fontFamily="@font/extralight"
android:layout_gravity="center|right"
android:layout_marginEnd="15dp"/>
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/hobbyImageView"
android:layout_width="54dp"
android:layout_height="47dp"
android:layout_gravity="center|left"
android:layout_marginStart="12dp"/>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
我可以通过这段代码检索爱好名称
val reference = database.getReference("Hobbies")
reference.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
val adapter = GroupAdapter<GroupieViewHolder>()
for (snap in snapshot.children) {
val hobbiesItem = snap.getValue(HobbiesClass::class.java)
if (hobbiesItem != null) {
adapter.add(HobbiesAdapter(hobbiesItem))
}
}
tophobbies.adapter = adapter
}
override fun onCancelled(error: DatabaseError) {
}
})
这是我的实时数据库
我试着把这个代码块放在adapter.add(HobbiesAdapter(hobbiesItem))下
for (dataSnapshot in snapshot.children){
var map = dataSnapshot.getValue() as Map<String,Object>
val imageLink = map.get("imageUrl") as String
Picasso.get().load(imageLink).into(hobbyImageView)
}
但它只把图像到我的第一个项目在我的回收视图也不是正确的图像。以下是我的应用程序看起来像后,我启动它
1条答案
按热度按时间mkshixfv1#
你的问题就在这里:
在这里,您将传递一个hobbiesItem,而不是hobbiesItem列表给适配器。
1.创建类型为hobbiesItem的全局列表。
1.替换适配器。将(HobbiesAdapter(hobbiesItem))添加到示例列表。添加(HobbiesAdapter(hobbiesItem))
1.然后将此exampleList传递给适配器,如下所示:适配器.add(示例列表).
适配器应接受hobbiesItem列表。onDataChange应将该列表传递给适配器。