Как запустить Activity в адаптере?

У меня есть ListActivity с моим настроенным адаптером, и внутри каждого представления он может иметь несколько кнопок, в которых мне нужно реализовать OnClickListener . Мне нужно реализовать OnClickListener в адаптере. Однако я не Я не знаю, как вызвать такую ​​функцию, как startActivity () или setResult () . Поскольку адаптер не распространяется на Activity.

Итак, как лучше всего решить эту проблему?

Спасибо.

66
задан Masoud Mokhtari 2 November 2019 в 10:24
поделиться

1 ответ

Первое Решение:

можно звонить, запускают действие в адаптере как это:

public class YourAdapter extends Adapter {
     private Context context;

     public YourAdapter(Context context) {
          this.context = context;     
     }

     public View getView(...){
         View v;
         v.setOnClickListener(new OnClickListener() {
             void onClick() {
                 context.startActivity(...);
             }
         });
     }
}

Второе Решение:

можно звонить onClickListener из кнопки из YourAdapter класс. Выполните эти шаги:

Craete интерфейс как это:

public YourInterface{
         public void  yourMethod(args...);
}

Затем в Вашем адаптере:

    public YourAdapter extends BaseAdapter{
               private YourInterface listener;

           public YourAdapter (Context context, YourInterface listener){
                    this.listener = listener;
                    this.context = context;
           }

           public View getView(...){
                View v;
         v.setOnClickListener(new OnClickListener() {
             void onClick() {
                 listener.yourMethod(args);
             }
         });
}

И то, где Вы инициируете yourAdapter, будет похоже на это:

YourAdapter adapter = new YourAdapter(getContext(), (args) -> {
            startActivity(...);
        });

Этот ссылка может быть полезна для Вас.

0
ответ дан 24 November 2019 в 14:46
поделиться
Другие вопросы по тегам:

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