is it possible to have method startActivtyForResult
within an adapter?Then how to get the response? Where to execute the call back function?
Yes. You can call startactivityforresult() from adapter.
First you use startActivityForResult() with parameters in the first Activity and if you want to send data from the second Activity to first Activity then pass the value using Intent with the setResult() method and get that data inside the onActivityResult() method in the first Activity .
Yes, it's possible. You need a reference for the Context
in the adapter and call the activity:
Intent intent = new Intent(context, TargetActivity.class); ((Activity) context).startActivityForResult(intent, REQUEST_FOR_ACTIVITY_CODE);
Beware that context must be an activity context or this code will fail.
You get the result in the enclosing activity using onActivityResult
as usual.
So, for example:
In your adapter:
MyAdapter(Context context) { mContext = context; } public View getView(int position, View convertView, ViewGroup parent) { … open.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { … Activity origin = (Activity)mContext; origin.startActivityForResult(new Intent(mContext, SecondActivity.class), requestCode); } }); … } public void onActivityResult(int requestCode, int resultCode, Intent data) { Log.d("MyAdapter", "onActivityResult"); }
In your second activity, do as usual with setResult
and finish
.
In your main activity, capture the result and pass to the adapter callback:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { mAdapter.onActivityResult(requestCode, resultCode, data); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With