2017-06-24 68 views
0

我使用的微調和ListView同時,我一直在使用微調和ListView

spinner.setSelection(somePosition); 

和一些邏輯,當我在列表中滾動我有有數據表明,告訴哪些值的微調器設置,和IM當我點擊微調它也有一些數據表明,設置

listView.setSelection(somePosition); 

問題的立場是,當IM滾動的ListView和我的適配器我需要改變微調所選項目的現在的位置,它調用方法

spinnerSurah.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> adapterView, View view, int clickPosition, long l) { 
       int skipTotal = 0; 
       for(int i = 0 ; i < clickPosition ; i++) 
       { 
        SafeJSONObject surahObject = jsonArraySurahList.getJSONObject(i); 
        skipTotal+= surahObject.getInt("ayas"); 
       } 
       SafeJSONObject surahObject = jsonArraySurahList.getJSONObject(clickPosition); 
       Log.e("spinnerSurah","spinnerSurah surahObject "+surahObject.toString()); 
       positionSelection = skipTotal; 
       listView.setSelection(positionSelection); 


       } 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> adapterView) { 

      } 
     }); 

幫助我,我需要改變微調的位置而不調用它的監聽器。

回答

0

如果從偵聽器調用ListView選擇,您可以在偵聽器中設置繞過選擇邏輯的條件。

在你的類聲明一個布爾值:

boolean skip_listener = false; 

,改變你的聽衆到

@Override 
      public void onItemSelected(AdapterView<?> adapterView, View view, int clickPosition, long l) { 
       if(skip_listener){skip_listener = !skip_listener;return;} 
       int skipTotal = 0; 
       for(int i = 0 ; i < clickPosition ; i++) 
       { 
        SafeJSONObject surahObject = jsonArraySurahList.getJSONObject(i); 
        skipTotal+= surahObject.getInt("ayas"); 
       } 
       SafeJSONObject surahObject = jsonArraySurahList.getJSONObject(clickPosition); 
       Log.e("spinnerSurah","spinnerSurah surahObject "+surahObject.toString()); 
       positionSelection = skipTotal; 
       skip_listener = true; 
       listView.setSelection(positionSelection); 


       } 

      } 
+0

由於它工作在一定程度上,現在我還有一個問題,我怎麼可以申請onTouchListener和onClicKListener上按鈕?例如我需要輕掃按鈕功能並且可以在同一按鈕上點擊 –

+0

除了按鈕點擊之外,您還可以檢測觸摸事件,例如使用MotionEvent觸摸按鈕。 添加'進口android.view.MotionEvent'然後添加觸摸監聽器按鈕: 'button.setOnTouchListener(新OnTouchListener(){ @覆蓋 公共布爾onTouch(視圖V,MotionEvent事件){ 如果(事件。的getAction()== MotionEvent.ACTION_DOWN){// 在這裏添加您的觸摸操作 迴歸真實; } 返回FALSE; } });' – QitVision