Android Spinner基础使用:选中名称获得内码

平时感觉很多地方都用得上,数据库中直接显示内码识别度不高。所以需要显示名字,但是后台又需要内码进行操作。所以就做了简单的一系列操作(数据量不多适用,数据量较多可以自行优化;当然一般用下拉框加载数据量也不会很多。):

以产线为例子:
private  HashMap<String,String> LinehashMap = null; //产线数据mp
private int LineID =0;//产线内码
//获取产线数据
private void initLine(){
    final Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            LinehashMap = (HashMap<String,String>)msg.obj;
            if (LinehashMap != null){
                SetSpinner(LinehashMap);
            }else {
		//自己写的提示框,可以用Toast代替
                showExitDialog("产线数据不存在");
            }
        }
    };
    Runnable run=new Runnable() {
        @Override
        public void run() {
            Message message=new Message();
            DAL.DB dal = new DAL.DB();
            message.obj=dal.GetLine();
            handler.sendMessage(message);
        }
    };
    new Thread(run).start();
}

//把HashMap写入到下拉框并监控获得内码

private void SetSpinner(HashMap<String,String> hashMap){
    final Spinner cmbModel =(Spinner)findViewById(R.id.SpinnerLine);
    List<String> list = new ArrayList<>();
    int LineCount = 0;
    if (hashMap != null){
        int i = 0;
        for (String o : hashMap.keySet()) {
            list.add(o);
            //System.out.println("key=" + o + " value=" + tempMap.get(o));
            //根据历史记录查询出的LineID找到默认值的索引
            if (LineID != 0 && LineID == Integer.parseInt(hashMap.get(o)))
                LineCount = i;
            i++;
        }
	//如果LineID为空,则赋选项中第一个值
        if (LineID == 0)
            LineID=Integer.parseInt(hashMap.get(list.get(0)));

        //适配器
        ArrayAdapter<String> arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
        //设置样式
        arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //加载适配器
        cmbModel.setAdapter(arr_adapter);
	// 设置默认选中值
        cmbModel.setSelection(LineCount);
	//监听
        cmbModel.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String data = (String)cmbModel.getItemAtPosition(position);//从spinner中获取被选择的数据
                LineID = Integer.parseInt(LinehashMap.get(data));
		//保存该用户最后选中的产线作为历史记录
                SaveUserLine();
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值