【问题标题】:On Groupie Recycler view every 7 rows it repeats the same uid of firebase database在 Groupie Recycler 视图中,它每 7 行重复一次相同的 firebase 数据库 uid
【发布时间】:2020-01-28 20:40:34
【问题描述】:

我不知道在这种情况下该怎么做,因为每 7 行可绘制的图像是最喜欢的,即使它不应该是。

class RecipesActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_recipes)

getRecipes()        
    }
    companion object{
        val REC_KEY = "REC_KEY"
    }
    var adapter = GroupAdapter<GroupieViewHolder>()
    private fun getRecipes(){
        val ref = FirebaseDatabase.getInstance().getReference("/recipes")
        val adapter = GroupAdapter<GroupieViewHolder>()
        ref.addListenerForSingleValueEvent(object : ValueEventListener {
            override fun onDataChange(p0: DataSnapshot) {
                p0.children.forEach{
                    val reci = it.getValue(Recipes::class.java)
                    if(reci != null) {
                        adapter.add(RecipesItem(reci))
                    }
                }
                adapter.setOnItemClickListener{ item, view ->
                    val recItem = item as RecipesItem
                    val intent = Intent(view.context, RecipeDetail::class.java)
                    intent.putExtra(REC_KEY, recItem.recipes)
                    startActivity(intent)
                }
                recycler_recipes.adapter = adapter
            }
            override fun onCancelled(p0: DatabaseError) {
            }
        })
    }
}

这个类是把项目放在视图中。我需要它们,但是当我检查是否收藏时,就会出现问题。

class RecipesItem(val recipes: Recipes): Item<GroupieViewHolder>(){
    override fun bind(viewHolder: GroupieViewHolder, position: Int) {
        viewHolder.itemView.name_recycler.text = recipes.reci_name
        viewHolder.itemView.type_recipes.text = recipes.reci_diet
        viewHolder.itemView.timeToPrepare.text = recipes.reci_time.plus(" min")

        //checkiffav
        val user = FirebaseAuth.getInstance().currentUser!!.uid
        val fav = FirebaseDatabase.getInstance().getReference("/users/$user/fav_recipes/${recipes.id}")
        fav.addListenerForSingleValueEvent(object: ValueEventListener{
            override fun onDataChange(p0: DataSnapshot){
                if(p0.exists()){
                    viewHolder.itemView.favorite.setImageResource(R.drawable.favorite)
                }
            }
            override fun onCancelled(p0: DatabaseError) {
            }
        })
    }
    override fun getLayout(): Int {
        return R.layout.row_recipes
    }
    }

基本上我有 20 个食谱,并且我有一个最喜欢的系统,但是回收器视图只获取每 7 行的食谱的 ID,然后重复相同的 ID!我对 kotlin 和 firebase 真的很陌生,我不知道如何解决。在每 7 行中,配方显示为 fav,因为 firebase 引用获取的 id 与第一个相同。

【问题讨论】:

  • 请把你的问题说得更清楚。
  • @yalpsideman 基本上我有 20 个食谱,并且我有一个最喜欢的系统,但是回收器视图仅在每 7 行上获取食谱的 ID,而不是重复相同的 ID!我对 kotlin 和 firebase 真的很陌生,我不知道如何解决。在每 7 行上,配方显示为 fav,因为 firebase 引用获取的 id 与第一个相同

标签: android firebase android-studio kotlin firebase-realtime-database


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多