爲ViewFlipper添加點擊事件,很簡單

在使用ViewFlipper的時候,其實沒必要給每個子view都添加點擊事件,查看方法ViewFlipper.getDisplayedChild()得知,該方法能獲取當前展示的view的索引值,返回int類型。很顯然,如果能獲取到這個值,就能折中實現了每個子view的點擊監聽的功能。

 mViewFlipper.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Logger.t(TAG).i(mViewFlipper.getDisplayedChild() + "");
            }
        });
爲ViewFlipper添加子view需要注意添加的時機:

一般的做法都是在代碼中動態給ViewFlipper添加子view:

 for (int i = 0; i < 3; i++) {
            ImageView imageView = new ImageView(this);
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            ImageLoader.getInstance().displayImage(urls.get(i), imageView, AppApplication.mOptions);
            mViewFlipper.addView(imageView);
        }
比如說這裏添加了3個子View,這裏就有一個問題了,如果這段代碼是在onResume()中調用了的,那麼,如果這個Activity或者Fragment進入onPause()生命週期之後,再重新進入onResume()回調,這時候會再次調用這段代碼繼續爲ViewFlipper添加子view,這時候,就會有6個子view存在。那麼,上面所述的監聽回調中返回的數值可能會影響到每個子view監聽功能的實現。當然,你可以利用取餘的方法去進行返回的數值轉換,但儘量不要這麼做。

爲了避免這種情況的發生,要清楚Activity和Fragment的生命週期,要避免在onResume()或者onStart()方法中進行添加。或者,在onPause()方法中調用removeAllViews()方法先移除掉所有的子view。


發佈了35 篇原創文章 · 獲贊 35 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章