Попытка открыть действие изнутри события onClick в моем адаптере - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь узнать, как открыть действие из события щелчка внутри моего адаптера.

Прямо сейчас я могу щелкнуть элемент просмотра карты и отправить контент textview тосту благодаря jogarcia, но я не могу понять, как открыть новое действие и передать содержимое textview через putExtra ()

Вот мой код адаптера: ...

    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        final ListItem ListItem = ListItems.get(position);
        holder.ConfinedSpaceID.setText(ListItem.getSpaceId());
        holder.ConfinedSpaceDescription.setText(ListItem.getDescription());
//the following is added to create an onclick listener for the cardview
        holder.cardview.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                String string;
                string = ListItem.getSpaceId().toString();
                Toast.makeText(context, "You clicked "+string, Toast.LENGTH_LONG).show();
            }
        });
    }

Я хочу иметь возможность открыть новое действие с именем DisplayIndividual.class и передать 'string' как putExtra (). Любая помощь будет оценена

Ответы [ 5 ]

0 голосов
/ 31 октября 2019

Большое спасибо всем за ваш вклад. Это было чудесно. Следующее сработало идеально для меня :) Я не читал / не выучил достаточно, чтобы понять getContext ()

                Intent myIntent = new Intent(v.getContext(),DisplayIndividual.class);
                myIntent.putExtra("STRING_2_Search", string);
                v.getContext().startActivity(myIntent);
0 голосов
/ 30 октября 2019

В методе onClick:

Intent intent = new Intent(context,MainActivity.class);
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(intent);

и во фрагменте передают контекст:

adapter = new Adapter(list , this.getApplicationContext());
recyclerView.setAdapter(adapter);
0 голосов
/ 30 октября 2019

Поместите int, который является вашим идентификатором, в новое намерение.

final Intent intent = new Intent(
     FirstActivity.this, SecondActivity.class);
final Bundle b = new Bundle();
b.putString("key", "value");
intent.putExtras(b);
startActivity(intent);
0 голосов
/ 30 октября 2019

Это в основном вопрос в Android. Обычно мы передаем данные из деятельности другому через Intent .

. Давайте внесем некоторые изменения в ваш фрагмент:

public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    final ListItem ListItem = ListItems.get(position);
    holder.ConfinedSpaceID.setText(ListItem.getSpaceId());
    holder.ConfinedSpaceDescription.setText(ListItem.getDescription());

    //the following is added to create an onclick listener for the cardview
    holder.cardview.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            String string;
            string = ListItem.getSpaceId().toString();
            Toast.makeText(context, "You clicked "+string, Toast.LENGTH_LONG).show();

            // code here, context usually is which activity you set this adapter from
            Intent intent = new Intent(context, DisplayIndi​​vidual.class);
            intent.putExtra("stringKey", string);
            startActivity(intent);
        }
    });
}

и в DisplayIndi​​vidual:

вы можете получить строковые данные обратно из Intent

String string getIntent().getStringExtra("stringKey");
0 голосов
/ 30 октября 2019

Вы можете передать контекст из вашего класса активности в адаптер следующим образом

AdapterClass obj = new AdapterClass(this);

В классе адаптера

Context context; //global
public AdapterClass(Context context)
{
   this.context = context;  
}

Затем вы можете использовать Intent сейчас

@Override
            public void onClick(View v) {
                String string;
                string = ListItem.getSpaceId().toString();
                Toast.makeText(context, "You clicked "+string, Toast.LENGTH_LONG).show();
                Intent intent = new Intent(context,...)
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...