私はカーソルアダプタを備えたドロップダウンスピナーを使用します。たとえば、1〜100個のアイテムが含まれます。 アイテム50が選択される。アイテムが選択される。次回、スピナーを開くと最初に目に見える行がアイテム50になります。スピナーを開くと、最初のアイテムにフォーカスします。最初に表示されるアイテムはアイテム1になりますか?スピナー - 最初の項目に焦点を合わせる
リスト内の自動スクロールのように、最初に表示されるドロップダウンの項目は1番目であり、選択されていない項目です。
私はカーソルアダプタを備えたドロップダウンスピナーを使用します。たとえば、1〜100個のアイテムが含まれます。 アイテム50が選択される。アイテムが選択される。次回、スピナーを開くと最初に目に見える行がアイテム50になります。スピナーを開くと、最初のアイテムにフォーカスします。最初に表示されるアイテムはアイテム1になりますか?スピナー - 最初の項目に焦点を合わせる
リスト内の自動スクロールのように、最初に表示されるドロップダウンの項目は1番目であり、選択されていない項目です。
あなたは、値のリストを表示/それを拡張し、セットアップを担当する2つのメソッドをオーバーライドすることにより、Spinner
はあなたがやりたいことができますあなたがしたい。
次のような最初の項目にスピナーの選択を設定することができます。
yourspinner.setSelection(0);
あなたはONSTART()メソッドでは、この操作が必要になります。
この最初の項目を選択します。私は最初の項目を選択したくありません。スピナーで最初の項目までスクロールするだけで、ドロップダウンリストに最初の項目が表示されます。 – vandzi
この短いコードは、あなたのために作業を行います。それは何のためにうまく動作するはず
public class CustomSpinnerSelection extends Spinner {
private boolean mToggleFlag = true;
public CustomSpinnerSelection(Context context, AttributeSet attrs,
int defStyle, int mode) {
super(context, attrs, defStyle, mode);
}
public CustomSpinnerSelection(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
public CustomSpinnerSelection(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomSpinnerSelection(Context context, int mode) {
super(context, mode);
}
public CustomSpinnerSelection(Context context) {
super(context);
}
@Override
public int getSelectedItemPosition() {
// this toggle is required because this method will get called in other
// places too, the most important being called for the
// OnItemSelectedListener
if (!mToggleFlag) {
return 0; // get us to the first element
}
return super.getSelectedItemPosition();
}
@Override
public boolean performClick() {
// this method shows the list of elements from which to select one.
// we have to make the getSelectedItemPosition to return 0 so you can
// fool the Spinner and let it think that the selected item is the first
// element
mToggleFlag = false;
boolean result = super.performClick();
mToggleFlag = true;
return result;
}
}
:
int prevSelection=0;
spSunFrom = (Spinner) findViewById(R.id.spTimeFromSun);
spSunFrom.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
prevSelection = spSunFrom.getSelectedItemPosition();
spSunFrom.setSelection(0);
return false;
}
});
spSunFrom.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
if(arg2==0)
spSunFrom.setSelection(prevSelection);
prevSelection = arg2;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
spSunFrom.setSelection(prevSelection);
}
});
偉大な答え!ありがとうございました! – vandzi
私はこのようなものを探していました... 3年後、それはまだ良い情報です!ありがとう。 – BinaryShrub
すごいよ!どうもありがとうございます! – sonnv1368