I use pageradapter where i have button that call other ativity. Can i finish pageractivity after calling secondactivity. My pageradapter code is below. The method finish() is undefined for the type new View.OnClickListener(){} Thanks.
public class ImageAdapterFromRes extends PagerAdapter {
Context context;
ArrayList<String> textArray;
ArrayList<String> urlArray;
ArrayList<Bitmap> bitmapArray;
ImageView imageView;
TextView textreklama1;
Button btnZoznam;
public Activity activity;
private int[] GalImages = new int[] {
//Images from resource folder.
R.drawable.one,
R.drawable.two,
R.drawable.three
};
ImageAdapterFromRes(Context context, ArrayList<String> textArray, ArrayList<String> urlArray, ArrayList<Bitmap> bitmapArray){
this.context=context;
this.textArray=textArray;
this.urlArray=urlArray;
this.bitmapArray=bitmapArray;
}
@Override
public int getCount() {
return GalImages.length;
}
public Object instantiateItem(ViewGroup collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.reklamator_new, null);
imageView = (ImageView) view.findViewById(R.id.imgreklama1);
imageView.setImageBitmap(bitmapArray.get(position));
textreklama1 = (TextView) view.findViewById(R.id.textreklama1);
textreklama1.setText(textArray.get(position).toString());
btnZoznam = (Button) view.findViewById(R.id.btnZoznam);
btnZoznam.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(v.getContext(), SecondActivity.class);
Bundle extras = new Bundle();
extras.putString("cat", "1");
i.putExtras(extras);
context.startActivity(i);
//finish(); ???????? HOW FINISH ?
}
});
((ViewGroup) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(ViewGroup arg0, int arg1, Object arg2) {
((ViewGroup) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
}
I would suggest the activity handles what it does (You might place it in a fragment at a later date).
You could simply to ((Activity) context).finish()
, but I tend to favour composition over aggregation.
Here's a quick snippet:
public class ImageAdapterFromRes extends PagerAdapter {
OnPagerItemSelected mListener;
Context context;
ImageAdapterFromRes(Context context, ArrayList<String> textArray, ArrayList<String> urlArray, ArrayList<Bitmap> bitmapArray,
OnPagerItemSelected listener
){
this.context=context;
this.textArray=textArray;
this.urlArray=urlArray;
this.bitmapArray=bitmapArray;
this.mListener = listener;
}
@Override
public int getCount() {
return GalImages.length;
}
public Object instantiateItem(ViewGroup collection, int position) {
btnZoznam.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(v.getContext(), SecondActivity.class);
Bundle extras = new Bundle();
extras.putString("cat", "1");
i.putExtras(extras);
context.startActivity(i);
//finish(); ???????? HOW FINISH ?
mListener.pagerItemSelected();
}
});
}
public interface OnPagerItemSelected {
void pagerItemSelected();
}
}
Notice there's a listener and the pagerItemSelected()
method is called when an item is clicked.
This means you can do this on your activity (or fragment, or other component):
public class MyActivity extends Activity implements OnPagerItemSelected {
void setUpPager() {
new ImageAdapterFromRes(this, ..., ..., ..., this);
}
void pagerItemSelected() {
finish();
}
}