1. 程式人生 > >如何在ViewPager外部獲取“當前顯示的頁面的位置position”

如何在ViewPager外部獲取“當前顯示的頁面的位置position”

當你從外部GridView點選某張圖片進入一個ViewPager預覽照片時,你可能需要刪除當前的照片,此時你需要在ViewPager外部獲取當前顯示頁面的position(如果你在內部的話直接點選setOnclickListener,會直接得到正確的position)

  @Override
        public Object instantiateItem(ViewGroup container, final int position) {
            View view = View
                    .inflate(PreviewPicActivity.this
, R.layout.item_preview_pic_viewpager, null); final PhotoView photoView = (PhotoView) view.findViewById(R.id.photoView); ImageLoader.getInstance().loadImage(mImgPths.get(position), photoView); photoView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { Toast.makeText
(PreviewPicActivity.this, "刪除" + position, Toast.LENGTH_SHORT).show(); mImgPths.remove(position); toolbar.setTitle(String.format("%d/%d", position + 1, mImgPths.size())); notifyDataSetChanged(); if (mImgPths.size
() == 0) { setImgPathResult(); } return true; } }); ((ViewPager) container).addView(view); return view; }

但是你想在外部獲取該position的話,把這個position傳遞出去是不行的,應為ViewPager會預載入附近的圖片,導致你獲取的position是錯亂的,應該如下:

 viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                // 把當前顯示的position傳遞出去
                mCurrentPosition = position;   

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

此外注意:當你點選外部的GridView時,是不會觸發setOnPageChangeListener的,所以要在剛進入ViewPager時,傳遞當前的position

// 把當前顯示的position傳遞出去
    mCurrentPosition = position;   

相關推薦

如何在ViewPager外部獲取當前顯示頁面位置position

當你從外部GridView點選某張圖片進入一個ViewPager預覽照片時,你可能需要刪除當前的照片,此時你需要在ViewPager外部獲取當前顯示頁面的position(如果你在內部的話直接點選setOnclickListener,會直接得到正確的positi

頁面開啟即獲取當前定位,位置

其實,我的需求是很簡單的,就是頁面一開啟獲取當前的省份位置; map(){ let _this = this; var geolocation = new BMap.Geolocation(); //獲取位置定位 var gc = new BMap.Geocoder();

ViewPager獲取當前顯示頁面的View

在viewpager的adapter裡面有一個方法可以獲取到當前的view,如下: 1 2 3 4 5 6 7 8 9 10 private View mCurrentView; @Override public void setPrimaryItem(Vie

ViewPager如何獲取當前的子view( 解決getChildAt(position) 為null的問題)(android__1332)

http://blog.csdn.net/jdsjlzx/article/details/44470417 from:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0804/1504.html

獲取當前顯示的aCTIVITY

com activity http activit list hao123 music avi 當前 GRaVITY%E4%B8%8ELaYOUT%5FGRaVITY http://music.baidu.com/songlist/495842089 http://mu

shell指令碼獲取當前指令碼所在位置

已開通新的部落格,後續文字都會發到新部落格 http://www.0xfree.top 我們在寫shell指令碼時,經常會遇到自己的一個指令碼需要呼叫到自己同目錄下另一個指令碼的情況,那麼如何能在指令碼中拿到我們指令碼所在的路徑呢? update:20160127 B

iOS 快速獲取當前顯示控制器的正確方式

背景 在開發過程中,經常需要獲取當前 window, rootViewController, 以及當前 ViewController 的需求. 如果 .m 實現不是在當前檢視情況下, 我們需要快速的獲取到當前控制器, 這種情況就需要先做好一層封裝,我一般是通過

滑動螢幕來獲取當前的座標位置

package com.bawei.myapplication.gesture; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import a

初識和利用Servlet,獲取顯示頁面提交的資料以及對MySQL資料庫的簡單操作 7.04

Servlet:web伺服器端的程式設計技術。是繼承了javax.servlet.http.HttpServlet類的Java類。由支援servlet的web伺服器(tomcat)呼叫和啟動執行。一個

【百度地圖api】之獲取當前使用者地理位置-瀏覽器定位

<script> var x=document.getElementById("demo"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPos

Android:ViewPager獲取當前介面的Fragment

在專案中,有時會用到在ViewPager中顯示同樣型別的Fragment,同時這樣的Fragment的個數是動態的,但是PagerAdapter沒有給我們提供getCurrentFragment類似的方法。 通過查閱資料和看原始碼,PagerAdapter中有個setPri

android獲取當前焦點的位置,查詢焦點的位置

在做電視機頂盒應用的時候,每個控制元件都是有焦點變化的顯示的,如果當前焦點被一個自己不知道的控制元件獲取到,則其他控制元件就不會獲取到焦點,我們必須要找到當前獲取焦點的控制元件,將其  android:focusable="false"   ,不讓它獲取到焦點。

html5獲取當前使用者gps位置獲取使用者IP地址並獲取ip所在位置

專案需要獲取每一個使用者的gps位置,如果使用者禁止了獲取位置許可權,則根據使用者IP獲取使用者的位置。 首先說使用HTML5進行GPS定位,使用 Geolocation(地理定位)的getCurrentPosition() 方法來獲得使用者的位置。getCu

獲取當前顯示的viewController

//獲取當前的UIViewController  + (NSString *)getViewController { UIViewController *resultVC = [selftopView

Echarts折線圖獲取當前顯示資料

不知道是開啟方式不對還是其他欠缺,感覺Echarts官網提供的Api不完整,挺鬱悶的! 話不多說,直接上程式碼 這是Echarts的滾動條事件,通過滾動動態獲取資料 另提醒,其中也包涵了當前顯示點的經緯度,如果有自動顯示tooltip需求的可以運用

獲取當前操作頁面上的所有控制元件

private static List<System.Web.UI.Control> __GetAllControls() { string __t

HTML5頁面直接調用百度地圖API,獲取當前位置,直接導航目的地(轉)

wid dir tle mark utf-8 mil 獲取 open init HTML5頁面直接調用百度地圖API,獲取當前位置,直接導航目的地 我是應用在微信中,自定義菜單,菜單直接鏈接到這個HTML5頁面,獲取當前位置後,頁面中定好目的地,這樣打開頁面後直接進入導航頁

在JavaScript中獲取當前頁面的滾動位置

scrollTop要獲取當前頁面的滾動條縱坐標位置,用: document.documentElement.scrollTop; 而不是: document.body.scrollTop; documentElement 對應的是 html 標簽,而 body 對應的是 body 標簽。 documentEl

HTML5頁面直接調用百度地圖API,獲取當前位置,直接導航目的地

position new html5 head css target str direction lmap <!DOCTYPE html> <html lang="zh-cmn-Hans"> <meta charset="UTF-8"

微信小程式動態獲取當前時間顯示頁面

index/index.wxml <!--index.wxml--> <view class="container"> <!-- 建立按鈕,為按鈕繫結函式 --> <button bindtap="getTime">點選獲取當前時間<