2021-04-30

功能需求:记录光谱数据(可通过记录的数据一次性开灯)

思路逻辑:

1-- 获取光谱数据

2-- 将数据一一设置到光谱进度条

控件:

Button保存数据按钮
Button展示数据按钮
AlertDialog-----弹出框

示例代码:

//初始化数组,容纳获取到的数据

private int[] data;
data=new int[10];

//获取数据

data[0]=seek1.getProgress();
data[1]=seek2.getProgress();
data[2]=seek3.getProgress();
data[3]=seek4.getProgress();
data[4]=seek5.getProgress();
data[5]=seek6.getProgress();
data[6]=seek7.getProgress();
data[7]=seek8.getProgress();
data[8]=seek9.getProgress();
data[9]=seek10.getProgress();

//保存按钮点击事件

//读取到数据并进行保存

btnSave.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //读取到write.txt文件中

     //版本一,读取到jason格式

        StringBuilder value = new StringBuilder();
        for (int i = 0; i <data.length ; i++) {
            if (i == data.length - 1){
                value.append(data[i]);
            }else {
                value.append(data[i]).append(",");
            }
        }
        try{
            String light = (String) SharedPreferencesUtil.getInstance().getValue("Light","");
            JSONObject json = new JSONObject();
            if (!light.isEmpty()){
                json = JSONObject.parseObject(light);
            }

            json.put("record" + (json.size()),value);

            SharedPreferencesUtil.getInstance().putValue("Light",json);
            System.out.println(json.toString());

        }catch(Exception e){
            e.printStackTrace();
        }
    }
});

//获取数据进行展示

btnShow.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                //JSONObject myObject;
                //获取到数据
                Object light = SharedPreferencesUtil.getInstance().getValue("Light", "");
                //System.out.println("this data--->" + light.toString());
                myObject = JSON.parseObject((String) light);
                ArrayList<String> mArrayList = new ArrayList();
                for (int i = 0; i < myObject.size() ; i++) {
//                    arr[i] = "record"+i;
                    mArrayList.add("record"+i);
                }
                String[] covertedArray = new String[mArrayList.size()];
                covertedArray = (String[]) mArrayList.toArray(covertedArray);
                AlertDialog.Builder alertBuilder = new AlertDialog.Builder(MainActivity.this);
                alertBuilder.setTitle("历史记录");
                String[] finalCovertedArray = covertedArray;

                alertBuilder.setSingleChoiceItems(covertedArray, index, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, finalCovertedArray[i], Toast.LENGTH_SHORT).show();
                        //JSON.toJSONString(finalCovertedArray[i]).toString()   record0
                        index=i;
                    }
                });

                alertBuilder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        String str = myObject.getString(finalCovertedArray[index]).toString();
                        String[] dataarr = str.split(",");
                        seek1.setProgress(Integer.parseInt(dataarr[0]));
                        seek2.setProgress(Integer.parseInt(dataarr[1]));
                        seek3.setProgress(Integer.parseInt(dataarr[2]));
                        seek4.setProgress(Integer.parseInt(dataarr[3]));
                        seek5.setProgress(Integer.parseInt(dataarr[4]));
                        seek6.setProgress(Integer.parseInt(dataarr[5]));
                        seek7.setProgress(Integer.parseInt(dataarr[6]));
                        seek8.setProgress(Integer.parseInt(dataarr[7]));
                        seek9.setProgress(Integer.parseInt(dataarr[8]));
                        seek10.setProgress(Integer.parseInt(dataarr[9]));
                        SharedPreferencesUtil.getInstance().putValue("index",index);
                                mHandler.sendEmptyMessage(12);
                                alertDialog2.dismiss();
                    }
                });

                alertBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Object indexObject=SharedPreferencesUtil.getInstance().getValue("index",index);
                        index=Integer.parseInt(indexObject.toString());
                        alertDialog2.dismiss();
                    }
                });

                alertDialog2 = alertBuilder.create();
                alertDialog2.show();

            }
        });

说明:

1-- 保存格式

{"record1":"31,30,34,36,27,30,31,32,45,30",

"record2":"80,94,89,100,96,95,93,99,117,123",

"record0":"0,0,0,0,0,0,0,0,0,0",

"record4":"71,65,58,74,63,76,65,84,90,79",

"record5":"132,105,101,102,98,95,96,111,110,139",

"record3":"255,255,255,255,255,255,255,255,255,255"}

所以要把每个进度条获取到的数据进行获取,再重新组合

2-- 弹出框要求

点击确定时光谱数据进度条状态改变且点击了确定才改变,点击取消不改变,依旧记录上一个位置的记录

 

可以使用以下代码将该XML实例转换为application/x-www-form-urlencoded格式的模型: ``` using System.Net.Http; using System.Text; using System.Xml; // 将XML实例转换为application/x-www-form-urlencoded模型 var xmlString = @"<OTA_InventoryCheckRQ EchoToken='487ef6b0-3526-45e3-81e7-0eac31754c10' Password='abc888888' PrimaryLangID='en-us' TimeStamp='2021-04-20 10:30:59' UserName='guowang' Version='1.000'> <POS> <Source> <RequestorID ID='elongID' Type='2'/> </Source> </POS> <HotelReservations> <HotelReservation> <RoomStay> <RoomTypes> <RoomType RoomTypeCode='5412309'/> </RoomTypes> <RatePlans> <RatePlan RatePlanCode='4674478'/> </RatePlans> <GuestCounts> <GuestCount AgeQualifyingCode='10' Count='2'/> <GuestCount AgeQualifyingCode='8' Count='0'/> </GuestCounts> <BasicPropertyInfo HotelCode='2525137'/> </RoomStay> <ResGlobalInfo> <RoomCount>10</RoomCount> <MemberLevel>V1</MemberLevel> <TimeSpan End='2021-04-30' Start='2021-04-29'/> </ResGlobalInfo> </HotelReservation> </HotelReservations> </OTA_InventoryCheckRQ>"; var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlString); var formContent = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("Message", xmlDoc.OuterXml) }); var encodedString = formContent.ReadAsStringAsync().Result; Console.WriteLine(encodedString); ``` 输出结果为: ``` Message=%3COTA_InventoryCheckRQ%20EchoToken%3D%22487ef6b0-3526-45e3-81e7-0eac31754c10%22%20Password%3D%22abc888888%22%20PrimaryLangID%3D%22en-us%22%20TimeStamp%3D%222021-04-20%2010%3A30%3A59%22%20UserName%3D%22guowang%22%20Version%3D%221.000%22%3E%3CPOS%3E%3CSource%3E%3CRequestorID%20ID%3D%22elongID%22%20Type%3D%222%22%2F%3E%3C%2FSource%3E%3C%2FPOS%3E%3CHotelReservations%3E%3CHotelReservation%3E%3CRoomStay%3E%3CRoomTypes%3E%3CRoomType%20RoomTypeCode%3D%225412309%22%2F%3E%3C%2FRoomTypes%3E%3CRatePlans%3E%3CRatePlan%20RatePlanCode%3D%224674478%22%2F%3E%3C%2FRatePlans%3E%3CGuestCounts%3E%3CGuestCount%20AgeQualifyingCode%3D%2210%22%20Count%3D%222%22%2F%3E%3CGuestCount%20AgeQualifyingCode%3D%228%22%20Count%3D%220%22%2F%3E%3C%2FGuestCounts%3E%3CBasicPropertyInfo%20HotelCode%3D%222525137%22%2F%3E%3C%2FRoomStay%3E%3CResGlobalInfo%3E%3CRoomCount%3E10%3C%2FRoomCount%3E%3CMemberLevel%3EV1%3C%2FMemberLevel%3E%3CTimeSpan%20End%3D%222021-04-30%22%20Start%3D%222021-04-29%22%2F%3E%3C%2FResGlobalInfo%3E%3C%2FHotelReservation%3E%3C%2FHotelReservations%3E%3C%2FOTA_InventoryCheckRQ%3E ``` 其中,key为"Message",value为对该XML实例进行URL编码后的字符串。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值