2016-08-02 72 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

相关问题