Spinner 当前选中的项目被重复选中
Spinner's currently selected item is repeatedly selected
即使重复选择 Spinner 当前选择的项目,我也希望事件发生。比如选了0再选0,我想让事件再飞一次
public class MySpinner extends Spinner{
OnItemSelectedListener listener;
public MySpinner(Context context, AttributeSet attrs)
{
super(context, attrs);
}
@Override
public void setSelection(int position)
{
super.setSelection(position);
if (position == getSelectedItemPosition())
{
listener.onItemSelected(null, null, position, 0);
}
}
public void setOnItemSelectedListener(OnItemSelectedListener listener)
{
this.listener = listener;
}
}
我用这段代码定义了一个扩展class。您如何将其应用于现有的 Spinner?
下面是电流源。
public static TextView mTXT_DRS4DL, mTXT_DRS4D_NXT;
public static Spinner mSPI_DRS4DL, mSPI_DRS4D_NXT;
public static ArrayList<String> mLIST_DRS4DL, mLIST_DRS4D_NXT;
public static ArrayAdapter<String> mADAPTER_DRS4DL, mADAPTER_DRS4D_NXT;
private static boolean isFirstSelected = true;
private static String mCheckString = "";
{
mSPI_DRS4DL = PlatMainActivity.instance.findViewById(R.id.spi_DRS4DL);
mLIST_DRS4DL = new ArrayList( Arrays.asList());
mADAPTER_DRS4DL = new ArrayAdapter<>(PlatMainActivity.instance, R.layout.support_simple_spinner_dropdown_item, mLIST_DRS4DL);
mSPI_DRS4DL.setAdapter(mADAPTER_DRS4DL);
mSPI_DRS4D_NXT = PlatMainActivity.instance.findViewById(R.id.spi_DRS4D_NXT);
mLIST_DRS4D_NXT = new ArrayList( Arrays.asList());
mADAPTER_DRS4D_NXT = new ArrayAdapter<>(PlatMainActivity.instance, R.layout.support_simple_spinner_dropdown_item, mLIST_DRS4D_NXT);
mSPI_DRS4D_NXT.setAdapter(mADAPTER_DRS4D_NXT);
}
public static void Search(String mSearch)
{
String mRemoveName;
if(mSearch.contains("DRS4DL")) {
mRemoveName = mSensorSearch.replaceAll(":DRS4DL", "");
mADAPTER_DRS4DL.add(mRemoveSensorName);
mADAPTER_DRS4DL.notifyDataSetChanged();
}
else if(mSearch.contains("DRS4D-NXT")) {
mRemoveName = mSensorSearch.replaceAll(":DRS4D-NXT", "");
mADAPTER_DRS4D_NXT.add(mRemoveSensorName);
mADAPTER_DRS4D_NXT.notifyDataSetChanged();
}
}
public static void SensorSpinnerEvent()
{
mSPI_DRS4DL.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//AbstractDataInterface.SendCmdMessage(mMessage, AbstractDataInterface.SEND_TO_DATA, PlatCmdMessage.MsgTouch.Req.SelRadar, 0);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
mSPI_DRS4D_NXT.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if(isFirstSelected)
{
isFirstSelected = false;
} else {
switch (position) {
case 0:
mCheckString = mLIST_DRS4D_NXT.get(0);
Log.e("LOG", "---------------------------------------------------->> DRS4D_NXT Check String : " + mCheckString);
break;
case 1:
mCheckString = mLIST_DRS4D_NXT.get(1);
Log.e("LOG", "---------------------------------------------------->> DRS4D_NXT Check String : " + mCheckString);
break;
case 2:
mCheckString = mLIST_DRS4D_NXT.get(2);
Log.e("LOG", "---------------------------------------------------->> DRS4D_NXT Check String : " + mCheckString);
break;
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
在你的 xml 中制作 MySpinner
的 widget
。然后替换
public static Spinner mSPI_DRS4DL, mSPI_DRS4D_NXT;
和
public static MySpinner mSPI_DRS4DL, mSPI_DRS4D_NXT;
即使重复选择 Spinner 当前选择的项目,我也希望事件发生。比如选了0再选0,我想让事件再飞一次
public class MySpinner extends Spinner{
OnItemSelectedListener listener;
public MySpinner(Context context, AttributeSet attrs)
{
super(context, attrs);
}
@Override
public void setSelection(int position)
{
super.setSelection(position);
if (position == getSelectedItemPosition())
{
listener.onItemSelected(null, null, position, 0);
}
}
public void setOnItemSelectedListener(OnItemSelectedListener listener)
{
this.listener = listener;
}
}
我用这段代码定义了一个扩展class。您如何将其应用于现有的 Spinner?
下面是电流源。
public static TextView mTXT_DRS4DL, mTXT_DRS4D_NXT;
public static Spinner mSPI_DRS4DL, mSPI_DRS4D_NXT;
public static ArrayList<String> mLIST_DRS4DL, mLIST_DRS4D_NXT;
public static ArrayAdapter<String> mADAPTER_DRS4DL, mADAPTER_DRS4D_NXT;
private static boolean isFirstSelected = true;
private static String mCheckString = "";
{
mSPI_DRS4DL = PlatMainActivity.instance.findViewById(R.id.spi_DRS4DL);
mLIST_DRS4DL = new ArrayList( Arrays.asList());
mADAPTER_DRS4DL = new ArrayAdapter<>(PlatMainActivity.instance, R.layout.support_simple_spinner_dropdown_item, mLIST_DRS4DL);
mSPI_DRS4DL.setAdapter(mADAPTER_DRS4DL);
mSPI_DRS4D_NXT = PlatMainActivity.instance.findViewById(R.id.spi_DRS4D_NXT);
mLIST_DRS4D_NXT = new ArrayList( Arrays.asList());
mADAPTER_DRS4D_NXT = new ArrayAdapter<>(PlatMainActivity.instance, R.layout.support_simple_spinner_dropdown_item, mLIST_DRS4D_NXT);
mSPI_DRS4D_NXT.setAdapter(mADAPTER_DRS4D_NXT);
}
public static void Search(String mSearch)
{
String mRemoveName;
if(mSearch.contains("DRS4DL")) {
mRemoveName = mSensorSearch.replaceAll(":DRS4DL", "");
mADAPTER_DRS4DL.add(mRemoveSensorName);
mADAPTER_DRS4DL.notifyDataSetChanged();
}
else if(mSearch.contains("DRS4D-NXT")) {
mRemoveName = mSensorSearch.replaceAll(":DRS4D-NXT", "");
mADAPTER_DRS4D_NXT.add(mRemoveSensorName);
mADAPTER_DRS4D_NXT.notifyDataSetChanged();
}
}
public static void SensorSpinnerEvent()
{
mSPI_DRS4DL.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//AbstractDataInterface.SendCmdMessage(mMessage, AbstractDataInterface.SEND_TO_DATA, PlatCmdMessage.MsgTouch.Req.SelRadar, 0);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
mSPI_DRS4D_NXT.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if(isFirstSelected)
{
isFirstSelected = false;
} else {
switch (position) {
case 0:
mCheckString = mLIST_DRS4D_NXT.get(0);
Log.e("LOG", "---------------------------------------------------->> DRS4D_NXT Check String : " + mCheckString);
break;
case 1:
mCheckString = mLIST_DRS4D_NXT.get(1);
Log.e("LOG", "---------------------------------------------------->> DRS4D_NXT Check String : " + mCheckString);
break;
case 2:
mCheckString = mLIST_DRS4D_NXT.get(2);
Log.e("LOG", "---------------------------------------------------->> DRS4D_NXT Check String : " + mCheckString);
break;
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
在你的 xml 中制作 MySpinner
的 widget
。然后替换
public static Spinner mSPI_DRS4DL, mSPI_DRS4D_NXT;
和
public static MySpinner mSPI_DRS4DL, mSPI_DRS4D_NXT;