Задать вопрос
azerphoenix
@azerphoenix
Java Software Engineer

Есть ли «аналог» для adapter.getRef(position).getKey() в RecyclerView.Adapter?

Здравствуйте!
Есть ли какой-либо "аналог" adapter.getRef(position).getKey() , который можно использовать в RecyclerView.Adapter?

Порывшись в сети нашел только одно решение:
https://stackoverflow.com/questions/50283774/getre...

Что касается моего кода, то он представлен ниже (в методе onbindviewholder):
holder.imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(!db.isFavorite(adapter.getRef(position).getKey())) {
                    db.addToFavorites(adapter.getRef(position).getKey());
                    holder.imageButton.setImageResource(R.drawable.ic_add_to_fav);
                    Toast.makeText(mContext, medication.get_tradeName() + " добавлен в избранное", Toast.LENGTH_SHORT).show();
                } else {
                    db.removeFromFavorites(adapter.getRef(position).getKey());
                    holder.imageButton.setImageResource(R.drawable.ic_remove_from_fav);
                    Toast.makeText(mContext, medication.get_tradeName() + " удален из избранного.", Toast.LENGTH_SHORT).show();
                }
            }
        });

Может кто знает более простое решение? Заранее благодарю!
  • Вопрос задан
  • 97 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
orcDamnar
@orcDamnar
Java, C/C++, Android SDK
В идеале, в onBind не нужно добавлять OnClickListener на кнопку. Правильно - это добавить свою реализацию SimpleOnItemTouchListener и с помощью GestureDetector и onGestureListener и ловить тач по элементу, а потом смотреть, если нужно куда пришелся тач и менять соответствующим образом даныне в адаптере по этому элементу и инициализировать новые данные с помощью notifyItemDataChanged. а в onBind только биндить данные к холдеру.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы