android - 添加新列表后,删除 Spinner Adapter 中的选定值(选中的单选按钮)
问题描述
我的微调器中有一个过滤器复选框,用于过滤任务完成与否的位置。如果我选中一个项目并选中过滤器复选框,即使列表已经是新的,微调器中的选定值(选中单选按钮)仍会被选中。
代码片段 我的微调器中有一个过滤器复选框,用于过滤任务完成与否的位置。如果我选中一个项目并选中过滤器复选框,即使列表已经是新的,微调器中的选定值(选中单选按钮)仍会被选中。
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);
}
解决方案
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();
推荐阅读
- javascript - 如何将从服务器发送的 JSON 字符串转换为 JavaScript 对象
- r - R plotly 带注释列的桑基图
- php - Libsodium PHP:常规密钥?
- fortran - 包含'mpif.h'时编译代码但切换到使用mpi时失败
- assembly - 执行“movq %rax, (%rdi)”后 %rax 会发生什么?
- php - Select from table where=$variable
- java - How to parse an ObjectId type from the url in the routes of Playframework
- ios - What is this strange white space at the top of my UIViewController when using the Search Controller on my device?
- python - I created a file type and an interpreter for the file type. I want to enable the interpreter run the file type once the file type is doublr clicked
- pandas - How to fix "KeyError" when extracting value from pandas series