Как закончить упражнение из адаптера? - PullRequest
52 голосов
/ 31 октября 2011

Я попытался передать context активности в адаптер, а затем я попытался context.finish(); Но это выдает мне одну ошибку, такую ​​как The method finish() is undefined for the type Context

Ответы [ 9 ]

191 голосов
/ 31 октября 2011

наберите тип с активностью.

((Activity)context).finish();
7 голосов
/ 23 июля 2014

Попробуйте использовать следующий код:

public YourAdapterName(......,Context context){

...

this.myContext=context;
}

И в вашем адаптере getView ()

btn.setOnClickListener(new Button.OnClickListener() {

    @Override
    public void onClick(View v) {
        ((YourActivityName)myContext).yourDesiredMethod();

    }
});
4 голосов
/ 31 октября 2011

Попробуйте передать свою активность в качестве параметра activity, тогда вы сможете вызвать finish() для него. Надеюсь, это поможет.

1 голос
/ 03 сентября 2018

Код для этого ((Activity)context).finish(); и полный код

holder.cardUsers.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent1=new Intent(mcontext,AstroChatPanel.class);
        intent1.putExtra("mobile",userslist.get(position).getMobile());
        intent1.putExtra("name",userslist.get(position).getName());
        intent1.putExtra("type","admin");
        mcontext.startActivity(intent1);
        ((Activity)mcontext).finish();
    }
});
0 голосов
/ 14 декабря 2018

В адаптере это будет работать

((Activity)view.getContext()).finish();
0 голосов
/ 22 марта 2018

Введите название вашей деятельности с контекстом и завершите работу

0 голосов
/ 05 ноября 2017

закрыть Активность Форма класса Пользовательский адаптер только в методе

 @Override
  public void onClick(View v) {
    MyApplication.value=mCompany.getCompanyId();
    Intent intent = new Intent(MyApplication.context, VaasetActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   intent.putExtra("ID_COMPANY",mCompany.getCompanyId());
    MyApplication.context.startActivity(intent);
    ((Activity)context).finish();
  }
});
0 голосов
/ 23 сентября 2017

Я не использовал это, но я надеюсь, что это будет работать.используйте: "this.recreate ()", если вы хотите перезагрузить его из действия.

, если вы хотите перезагрузить его из Adapter, используйте:: ((Activity) context) .recreate () "

0 голосов
/ 05 апреля 2017

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

((Activity)context).finish();
...