日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

ViewPager 的点击事件回调

發布時間:2023/11/27 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ViewPager 的点击事件回调 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天在交流群看到有人問這個問題,禮拜五工作忙的差不多多了,閑暇時間就記錄一下呢,很簡單的,記得自己剛畢業的時候

也是請教了別人,沒想到時隔多年自己也能幫助到他人,

?首先需要知道 pagerAdapter 中 有?instantiateItem 這個方法的作用就是根據當前的posistion來創建對應的視圖并且將這個創建好的視圖添加到容器中,

可以打印下里面的position?

回調這個position 首先先定義一個 接口然后接口里面再寫一個空方法例如

  public interface CallBack {void OnClick(int position);}

然后在定義這個接口方法,在通過快捷鍵生成get和set方法,當然由于get方法沒有用到可以直接刪除

  private CallBack callBack;public void setCallBack(CallBack callBack) {this.callBack = callBack;}

然后在監聽事件里面 調用接口里面的方法

  @Overridepublic Object instantiateItem(ViewGroup container, final int position) {View view = arrayList.get(position);view.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (callBack != null) {callBack.OnClick(position);}}});container.addView(view);return view;}

?

這樣就寫好了? ,暴漏下adapter

public class PageAdapter extends PagerAdapter {private ArrayList<View> arrayList;private Context context;public PageAdapter() {}public PageAdapter(ArrayList<View> arrayList, Context context) {super();this.arrayList = arrayList;this.context = context;}// 返回視圖的個數@Overridepublic int getCount() {return arrayList.size();}@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object object) {// 當返回為true的時候,就將根據當前的position得到的view展示出來return view == object;}// 這個方法的主要作用就是根據當前的posistion來創建對應的視圖,// 并且將這個創建好的視圖添加到容器中@Overridepublic Object instantiateItem(ViewGroup container, final int position) {View view = arrayList.get(position);view.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (callBack != null) {callBack.OnClick(position);}}});container.addView(view);return view;}// 這個方法的作用就是從容器中移除position所對應的視圖,// 而且這個移除的動作是在finishUpdate之前完成的。// 這個在 instantiateItem 方法中也提到過,// 也就是說在finishUpdate之前至少要完成兩個動作①原來視圖的移除②新視圖的增加@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView(arrayList.get(position));}private CallBack callBack;public void setCallBack(CallBack callBack) {this.callBack = callBack;}public interface CallBack {void OnClick(int position);}}

最后說下說下使用

在activity 里面通過 adapter 調用接口里面方法就行了

   pageAdapter.setCallBack(new PageAdapter.CallBack() {@Overridepublic void OnClick(int position) {Toast.makeText(SimpleViewPagerActivity.this, "點擊了第" + position + "個", Toast.LENGTH_SHORT).show();}});

?

總結

以上是生活随笔為你收集整理的ViewPager 的点击事件回调的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。