How to finish an activity from an Adapter..?
Asked Answered
J

12

64

I tried with passing context of activity into the adapter and then i tried context.finish(); But its giving me one error like The method finish() is undefined for the type Context

Jeopardize answered 31/10, 2011 at 9:37 Comment(1)
Use below link.i hope this will solve your problrm #33973121Bixby
M
251

type cast it with activity.

((Activity)context).finish();
Mantinea answered 31/10, 2011 at 9:40 Comment(3)
You cannot always assume that the context is Activity. It can also be ContextThemeWrapper. See https://mcmap.net/q/302768/-contextthemewrapper-cannot-be-cast-to-activityEmphasize
Thanks. The activity finishing from adapter class, so I am not able to send any data to the previous activity. How can get an event in my previous activity that the recyclerview activity has been finished.Site
thanks for your help. about question "sending data to previous activity" you can use ".putExtra" like variable.Growth
D
7

Try with the following code:

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

...

this.myContext=context;
}

And in your adapter getView()

btn.setOnClickListener(new Button.OnClickListener() {

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

    }
});
Digged answered 22/7, 2014 at 21:5 Comment(0)
T
6

For Kotlin code:

(context as Activity).finish()
Tingey answered 16/2, 2020 at 10:49 Comment(0)
P
5

Try passing your Activity as an activity parameter, then you'll be able to call finish() on it. Hope this helps.

Postlude answered 31/10, 2011 at 9:40 Comment(0)
R
4

In adapter it will work

((Activity)view.getContext()).finish();
Repine answered 14/12, 2018 at 11:56 Comment(0)
P
3

Code for this is ((Activity)context).finish();and complete code is

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();
    }
});
Pyne answered 3/9, 2018 at 17:29 Comment(1)
You cannot always assume that the context is Activity. It can also be ContextThemeWrapper. See https://mcmap.net/q/302768/-contextthemewrapper-cannot-be-cast-to-activityEmphasize
U
1

This Simple code helped me replace Activity with your current activity name

((Activity)context).finish();
Unrivaled answered 11/1, 2023 at 12:37 Comment(0)
A
0

i have not used it but i hope it will work. use: "this.recreate()" if you are want to reload it from within the activity.

if you want to reload it from Adapter then use: "((Activity)context).recreate()"

Andry answered 23/9, 2017 at 8:13 Comment(0)
S
0

Typecast your activity name with context and finish activity

Sanious answered 22/3, 2018 at 8:18 Comment(0)
S
0

You shouldn't pass context object in your adapter classes.

You can use Kotlin Higher Order Function (https://kotlinlang.org/docs/lambdas.html#instantiating-a-function-type) in a variable in your adapter, then you can use it where you use the adapter in fragment or activity.

Than you can use your activity context where it called.

Example:

Adapter Class:

var onClick = () -> Unit

Fragment:

adapterInstance.onClick = {this.activity?.finish()}
Soph answered 11/1, 2023 at 13:58 Comment(0)
D
-1

In your custom adapter try to call finish use below code

((Activity)context).finish();
Distal answered 5/4, 2017 at 10:51 Comment(0)
K
-2

close Activity form Class Custom Adapter just in method

 @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();
  }
});
Kolnick answered 5/11, 2017 at 15:28 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.