Удалить выбранное значение (установленный переключатель) в Spinner Adapter после добавления нового списка - PullRequest
0 голосов
/ 12 марта 2020

У меня есть флажок фильтра в моем счетчике, чтобы фильтровать, где задача завершена или нет. Если я проверяю элемент и проверяю флажок фильтра, выбранное значение (отмеченная переключателем) в счетчике все еще проверяется, даже если список уже новый.

Фрагмент кода В моем счетчике есть флажок фильтра, чтобы фильтровать, где задача завершена или нет. Если я проверяю элемент и проверяю флажок фильтра, выбранное значение (проверенная радиокнопка) в счетчике все еще проверяется, даже если список уже новый.


    public class CustomSpinnerAdapter : ArrayAdapter<String> {

        String type = String.Empty;
        List<string> orderList = new List<string>();


        /// <summary>
        /// CUstom Spinner Array Adapter constructor
        /// </summary>
        /// <returns></returns>
        public CustomSpinnerAdapter(Context context, int textViewResourceId, List<String> objects, String type)
                : base(context, textViewResourceId, objects) {
            this.type = type;
            this.orderList = objects;
        }

        /// <summary>
        /// returns the total array count minus one
        /// </summary>
        /// <returns>int</returns>
        public override int Count
        {
            get
            {
                return base.Count;
            }
        }

        public override View GetDropDownView(int position, View convertView, ViewGroup parent)
        {
            return getCustomView(position, convertView, parent);
        }

        public View getCustomView(int position, View convertView, ViewGroup parent)
        {
            LayoutInflater inflater = (LayoutInflater)Context.GetSystemService(Context.LayoutInflaterService);
            View view = null;

            if (position == 0)
            {
                if(Constants.ORDER_LIST == type) {

                    view = inflater.Inflate(Resource.Layout.CustomSpinnerView, null, true);
                    Switch filterOrder = (Switch) view.FindViewById(Resource.Id.switch_filterOrder);
                    filterOrder.Checked = Constants.ORDER_SWITCH_CLOSED == Constants.ORDER_SWITCH;

                    filterOrder.CheckedChange += delegate (object sender, CompoundButton.CheckedChangeEventArgs e)
                    {
                        saveOrderChecked(e.IsChecked);

                        PageTaskSearchView pageTaskSearchView = new PageTaskSearchView();

                        orderList = pageTaskSearchView.retrieveOrderlist(Constants.ORDER_SWITCH);


                        base.Clear();
                        base.AddAll(orderList);
                        base.NotifyDataSetChanged();

                    };

                }

                else
                {
                    LinearLayout.LayoutParams layoutparams = new LinearLayout.LayoutParams(0, 0);
                    view = base.GetDropDownView(position, convertView, parent);
                    TextView tv = (TextView)view;
                    tv.SetHeight(0);
                    tv.LayoutParameters = layoutparams;
                    tv.Visibility = ViewStates.Gone;
                    view = tv;
                }
            }
            else
            {
                view = base.GetDropDownView(position, null, parent);
            }

            parent.VerticalScrollBarEnabled = false;
            return view;

        }

        public static void saveOrderChecked(bool saveChecked)
        {
            Constants.ORDER_SWITCH = saveChecked ? Constants.ORDER_SWITCH_CLOSED : 0;
            Constants.ORDER_SWITCH_TRIGGER = true;
        }
    }
}
        orderSpinner = (Spinner)view.FindViewById(Resource.Id.spinner_workOrder);
        orderListResult = new List<string>();
        clearOrderIDListSelection();
        orderListResult.Clear();
        orderListResult.Add(Constants.EMPTY_STRING);
        foreach (OrderModel orderData in orderIds)
        {
            orderListResult.Add(orderData.IDNo);
        }

        OrderIdAdapter = new CustomSpinnerAdapter(context, Resource.Layout.ListItem, orderListResult, Constants.ORDER_LIST);
        OrderIdAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
        CreateCustomSpinner(orderSpinner, orderListResult, OrderIdAdapter);

Метод, используемый для отмены выбора счетчика

public void clearOrderIDListSelection()
        {
            RemoveItemSeclectedEvent(this.orderSpinner);
            CreateCustomSpinner(orderSpinner, orderListResult, OrderIdAdapter);
            orderSpinner.SetSelection(-1);

        }

1 Ответ

0 голосов
/ 12 марта 2020

Вы вызываете clearOrderIDListSelection() перед настройкой адаптера.

Вызовите этот метод после настройки адаптера.

orderSpinner = (Spinner)view.FindViewById(Resource.Id.spinner_workOrder);
orderListResult = new List<string>();
orderListResult.Clear();
orderListResult.Add(Constants.EMPTY_STRING);
foreach (OrderModel orderData in orderIds)
    {
        orderListResult.Add(orderData.IDNo);
    }

OrderIdAdapter = new CustomSpinnerAdapter(context, Resource.Layout.ListItem, 
orderListResult, Constants.ORDER_LIST);
    OrderIdAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
clearOrderIDListSelection();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...