2015-01-07 50 views
0

我想在android.i中實現一個微調器我想要爲spinner.Sp中的一個特定項目的同一選擇觸發一個事件。定期微調。 任何幫助將非常感激。謝謝。微調器android同樣的項目選擇只是一個特定的項目

setSelection(int position) 
{ 
    boolean sameSelected = position == getSelectedItemPosition(); 
    super.setSelection(position); 
    if (sameSelected) { 
      getOnItemSelectedListener().onItemSelected(this,getSelectedView(),position,getSelectedItemId()); 
} 
} 

該代碼給出空指針異常的getOnitemSelectedListener線內的「如果」語句

+0

發佈您的部分代碼 –

回答

0

使用擴展微調,這將廢止舊的選擇和事件會再次觸發 -

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); 
} 

} 

歡呼:)

0

當您再次點擊當前選定的項目時,它不能觸發任何事件。所以你不能捕獲setOnItemSelectedListener讓微調來響應。

0

空指針的原因是getselectedview()返回null,因爲它是第一次設置該項目並且沒有被選中。同樣對於特定項目的同樣選擇,我在if語句中添加了另一個條件作爲位置== 3.現在它的工作正常。謝謝。

相關問題