2011-05-04 58 views
0

我試圖使用setCallbackDuringFling來更新一些指示器在圖庫的時候,並且在某種程度上,當我將它設置爲(true)時,它會結束。當我說「口吃」時,我的意思是下一個圖像跳躍/捕捉到視圖中,因此在投擲期間視覺非常激動。即使當我拖慢時,下一張圖像也會顯示出來,然後當它中途時,它會卡入到位。但是,如果我將它設置爲false(因此onItemSelected仍然被調用,但只有一次,當投擲停止時),滾動/飛擲非常平滑。Android GalleryView setCallbackDuringFling導致口吃

我的onItemSelected(見下面的代碼)根本不是密集的,因此我懷疑口吃是由場景後面的東西引起的。

任何想法來解決這個問題?

在此先感謝。

// Set up Gallery listeners 
myGallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

    // When scrolling stops, set the indicators 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

     ImageView myIV; 

     // First reset myCurrentDot 
     myIV = (ImageView) findViewById (myDotID[myCurrentDot]); 
     myIV.setImageResource(R.drawable.grey); 
     // The set the "position" dot to red 
     myIV = (ImageView) findViewById (myDotID[position]); 
     myIV.setImageResource(R.drawable.red); 
     // update myCurrentDot 
     myCurrentRedDot = position; 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
     // TODO Auto-generated method stub 
    } 
}); // End Gallery Listener 

回答

0

setCallbackDuringFling()被稱爲與true,每一個項目被選中時,onItemSelected叫您AdapterView.OnItemSelectedListener實例。

看着你的代碼,我們可以看到findViewById()被調用兩次。也許找到這個觀點是一個過於沉重的過程。或許,不是每次都搜索視圖,而是使用視圖緩存機制。只需用視圖緩存(ImageView[] myDotViews)替換您的佈局ID緩存(myDotID)即可。

+0

好的,我可以試試看... – MikeC 2011-05-04 09:28:25

+0

試過但沒有解決問題。 – MikeC 2011-05-04 10:28:05