Отправка переменной из адаптера в действие

В своем приложении я использую CardView. При щелчке по карте открывается другое действие, для которого требуется идентификатор карты. Итак, я попытался отправить данные через намерение, которое я использую, чтобы открыть действие. Моя проблема в том, что полученное значение в принимающем классе всегда остается 0, хотя общее значение отличается. Я ошибаюсь?

Часть адаптера:

@Override
public void onBindViewHolder(ViewHolder holder, final int position) {

    final int a = dataAdapter.getId();

    holder.cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent(context, ChatActivity.class);
            intent.putExtra("CardID", a);
            context.startActivity(intent);
        }
});

Второй класс, который получает значение:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chat_layout);

        Intent intent = getIntent();
        int cardId = intent.getIntExtra("cardID", 0);
        Log.d("cardId = ", String.valueOf(cardId)); 
}

Проверьте ответ, это ошибка символа.

W4R10CK 24.09.2018 19:09
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
32
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Если ваш dataAdapter является списком, вы можете использовать параметр позиция в onBindViewHolder().

intent.putExtra("CardID", dataAdapter.get(position));

или вы можете использовать getAdapterPosition(), только если вы используете recyclerViewAdapter

intent.putExtra("CardID", dataAdapter.get(getAdapterPosition()));
Ответ принят как подходящий

Когда вы вставляете, CardID «C» пишется в верхнем регистре, а когда вы его получаете, cardID «c» - в нижнем регистре. Это чувствительно к регистру, просто сделайте их в одном регистре, и это должно сработать.

@ user9155899 :: именно по этой причине я всегда объявляю константы для своих "дополнительных ключей" :: static final String EXTRA_CARD_ID = "ExtraCardId"; , а затем просто использую это в своем коде :: intent.putExtra(EXTRA_CARD_ID , a);

Barns 24.09.2018 19:17

Заменить на это -

intent.getIntExtra("CardID", 0);

Заглавная буква C отсутствует.

Другие вопросы по теме