spinner:获取选中值的三种方法
spinner绑定的值一般分3种形式存放:
1、存放在java页面的数组中:{“陕西”,”深圳”,”北京”}
private String[] province= { "江西", "湖南","西安"}; private String[][] city = { { "城市", "景点"}, { "张家界", "长沙"}, { "吃喝玩乐", "biangbiang面"}}; private String[][][] zone = { { { "南昌", "赣州"}, { "庐山", "龙虎山"},}, { { "黄石寨", "森林公园"}, { "临潼", "兵马俑"},}};
2、存放在strings.xml文件中
最新的京东省市区XML点击下载就好,没办法还的花积分下载,最少两积分,这是我自己网上整理的,本着解决问题,却不能免费下载,抱歉.
3、存放在数据库中,调用接口获得
1、2是在一般的页面中比较常用,个人推荐第2种。这样你的页面看起来不会很乱/繁杂,而且一般把值存放在xml中,看起来比较专业。比如values文件夹中的:arrays.xml、colors.xml、ids.xml、strings.xml、styles.xml等等。第一种,本地的数组,对比而言第二种代码优化起来会更容易.
3是需要调用接口,前几天遇到获取从接口获取数据,这几天闲了下来,记录自己当时遇到的问题和方法,防止以后用到就可以来看。
下面就来对第三种方式的取值,进行说明。
这个时候,大家在面临spinner应该多少已经了解了,
Spinner,竟然不能默认不选中和修改默认显示内容
//region 生产线 private void getLine() { Gson gson = new Gson(); //获取生产线的接口 String json = tool.doGet(Globe.Base_Biz_Url + "/getLine"); //实体 LineVo liveVo = gson.fromJson(json, new TypeToken<LineVo>() { }.getType()); if (liveVo.status == 200) { try { JSONObject jsonObj = new JSONObject(json); String data = ""; data = jsonObj.getString("data").toString(); if (data != "") { List<Line> listLine = gson.fromJson(data, new TypeToken<List<Line>>() { }.getType()); //默认==请选择 供用户选择生产线 KeyValueInfo ky = new KeyValueInfo("请选择", "-1"); LineList.add(ky); //遍历获取LineName for (int i = 0; i < listLine.size(); i++) { KeyValueInfo keyValue = new KeyValueInfo(listLine.get(i).getLineName(), listLine.get(i).getLineCode()); //添加的到生产线的List集合 LineList.add(keyValue); } //自定义的Spinner布局用的是listview这里用到了适配器ArrayAdapter ArrayAdapter<KeyValueInfo> arrayAdapter = new ArrayAdapter<KeyValueInfo>(this, android.R.layout.simple_spinner_dropdown_item, LineList); spLine.setAdapter(arrayAdapter); spLine.setSelection(0, false); spLine.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String LineCode = ((KeyValueInfo) (spLine.getSelectedItem())).getValue(); //清除数据 WorkOrderList.clear(); spWorkOrder.setAdapter(null); WorkCenterList.clear(); spWorkCenter.setAdapter(null); GetWorkOrder(LineCode);//获取生产工单 } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); } } catch (JSONException e) { System.out.println(e.getMessage()); e.printStackTrace(); } } } //endregion
//region 获取生产工单 private void GetWorkOrder(String lineCode) { Gson gson1 = new Gson(); StringBuilder sb = new StringBuilder(Globe.Base_Biz_Url + "/getWorkOrderByLineCode"); sb.append("/"); sb.append(lineCode); String jsonList = tool.doGet(sb.toString()); WorkOrderVo mOrderVo = gson1.fromJson(jsonList, new TypeToken<WorkOrderVo>() { }.getType()); if (mOrderVo.status == 200) { JSONObject jsonObjList = null; try { jsonObjList = new JSONObject(jsonList); String dataList = ""; dataList = jsonObjList.getString("data").toString(); if (dataList != "") { List<WorkOrder> list = gson1.fromJson(dataList, new TypeToken<List<WorkOrder>>() { }.getType()); KeyValueInfo ky = new KeyValueInfo("请选择", "-1"); WorkOrderList.add(ky); for (int i = 0; i < list.size(); i++) { KeyValueInfo keyValue = new KeyValueInfo(list.get(i).getSubWorkOrder(), list.get(i).getId()); WorkOrderList.add(keyValue); } ArrayAdapter<KeyValueInfo> arrayAdapter = new ArrayAdapter<KeyValueInfo>(this, android.R.layout.simple_spinner_dropdown_item, WorkOrderList); spWorkOrder.setAdapter(arrayAdapter); //spWorkOrder.setSelection(0, false); spWorkOrder.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { WorkCenterList.clear(); spWorkCenter.setAdapter(null); String workOrderId = ((KeyValueInfo) (spWorkOrder.getSelectedItem())).getValue(); GetWcCode(workOrderId); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); } } catch (JSONException e) { e.printStackTrace(); } } } //endregion
犯了错,总之要改,改之后呢,最好还是记录。因为这些难题在后来的日子还是会遇到。不妨到时候回过头看看自己当时记录的错误。毕竟是自己的错,资以改正。
纸上得来终觉浅,书到用时方恨少。希望对你有所帮助。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115055.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...