2016-08-02 112 views
1

我知道這個問題已經被很多人問過,但我仍然有問題。如果我單擊微調器itemonclicklisterner中未觸發的相同項目。我在谷歌中找到了一些代碼。像Android微調選擇相同的項目兩次

public class SpinnerTrigger extends Spinner { 

public SpinnerTrigger(Context context) { 
    super(context); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void setSelection(int position, boolean animate) { 
    ignoreOldSelectionByReflection(); 
    super.setSelection(position, animate); 
} 

private void ignoreOldSelectionByReflection() { 
    try { 
     Class<?> c = this.getClass().getSuperclass().getSuperclass().getSuperclass(); 
     Field reqField = c.getDeclaredField("mOldSelectedPosition"); 
     reqField.setAccessible(true); 
     reqField.setInt(this, -1); 
    } catch (Exception e) { 
     Log.d("Exception Private", "ex", e); 
     // TODO: handle exception 
    } 
} 

@Override 
public void setSelection(int position) { 
    ignoreOldSelectionByReflection(); 
    super.setSelection(position); 
} 

} 

我用這段代碼創建了類。但我的問題是我需要調用這個類。我的意思是從主要活動,我需要調用哪一個我需要調用(ignoreOldSelectionByReflection方法或setSelection)。我在谷歌嘗試所有這些課程,但沒有人解釋這一點。所以任何人都可以幫助我擺脫這個問題。

+0

工作,你必須在這裏展示的定製微調類,這是不是您的查詢的解決方案的代碼,所以只需使用簡單的微調XML和在主要活動中實現它 – Vickyexpert

回答

-2

使用此方法。這對我來說

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
     // your code here 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parentView) { 
     // your code here 
    } 

}); 
+1

感謝您的重播。我只有這樣的代碼。但是,第二次選擇相同的項目時,它不會調用「spinner.setOnItemSelectedListener」本身。你有任何其他想法,請讓我知道 – Suresh