如何在pageradpter中完成活动?
我使用pageradapter,其中有调用其他活动的按钮。调用第二个活动后,我可以完成pageractivity吗?我的pageradapter代码如下。方法finish()未定义为新的View.OnClickListener(){} 谢谢。如何在pageradpter中完成活动?
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);
}
}
回答:
我建议活动处理它做什么(你可以将其放入一个片段在稍后的日期)。
您可以简单地((Activity) context).finish()
,但我倾向于favour composition over aggregation。
这里有一个快速片段:
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();
}
}
注意有一个监听器,并单击某个项目时pagerItemSelected()
方法被调用。
这意味着你可以这样做你的活动(或片段,或其他组件):
public class MyActivity extends Activity implements OnPagerItemSelected { void setUpPager() {
new ImageAdapterFromRes(this, ..., ..., ..., this);
}
void pagerItemSelected() {
finish();
}
}
回答:
你可以用铸造完成的活动:
((Activity) context).finish();
以上是 如何在pageradpter中完成活动? 的全部内容, 来源链接: utcz.com/qa/266684.html