В представлении Group ie Recycler каждые 7 строк повторяется один и тот же идентификатор базы данных Firebase. - PullRequest
0 голосов
/ 28 января 2020

Я не знаю, что делать в этом случае, потому что каждые 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 строк, то он повторяет один и тот же идентификатор! Я действительно новичок в kotlin и Firebase, и я не знаю, как решить. На каждых 7 строках появляется рецепт, который имеет фаворит, потому что идентификатор, который получает ссылка на базу данных, совпадает с первым.

1 Ответ

0 голосов
/ 04 февраля 2020

Отвечено в группе ie Система отслеживания проблем: https://github.com/lisawray/groupie/issues/320#issuecomment -581915693

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...