Android 台灣中文網

標題: 加入loop讓接收到的數據可以更新顯示在textview [打印本頁]

作者: kansas73    時間: 2015-3-5 17:13
標題: 加入loop讓接收到的數據可以更新顯示在textview
我想要寫一隻APP可以接收我從client丟出來的資料並且顯示
現在問題在於我只能顯示出我丟出的第一筆資料
而第二筆資料卻無法顯示出來,即使丟出第二筆還是只有顯示第一筆資料
  1. try{
  2.                 //建立serverSocket
  3.                 serverSocket = new ServerSocket(8080);
  4.                 //等待連線
  5.                 while (true) {
  6.                     //接收連線
  7.                     Socket client = serverSocket.accept();
  8.                     handler.post(new Runnable() {
  9.                         public void run() {
  10.                             test.setText("Connected.");//如果建立成功 顯示connected
  11.                         }
  12.                     });
  13.                     
  14.                     DataInputStream in = new DataInputStream(client.getInputStream());//取得dataoutputstream並放置於in                                      
  15.                             while(in!=null){       //當in裡面有值的時候執行以下的動作
  16.                                     //接收資料   
  17.                                 byte[] re = new byte[6];//先開個re的陣列大小為6
  18.                                 in.read(re);                  //並把in讀進來放進re
  19.                                 short tmp[] = {(short) (0xff & re[0]),        //tmp負責處理我所丟過來的封包格式
  20.                                                            (short) (0xff & re[1]),   //例如 傳送0x70在textview上則顯示70
  21.                                                            (short) (0xff & re[2]),   //以此類推
  22.                                                            (short) (0xff & re[3]),
  23.                                                            (short) (0xff & re[4]),
  24.                                                            (short) (0xff & re[5]),};
  25.                                 int ddata0,ddata1,ddata2,ddata3,ddata4,ddata5; //將處理完的封包格式放進來               
  26.                                 ddata0=tmp[0];
  27.                                 ddata1=tmp[1];
  28.                                 ddata2=tmp[2];
  29.                                 ddata3=tmp[3];
  30.                                 ddata4=tmp[4];
  31.                                 ddata5=tmp[5];                     
  32.                                 dd0=Integer.toHexString(ddata0);  //格式轉換就不說明了
  33.                                 dd1=Integer.toHexString(ddata1);
  34.                                 dd2=Integer.toHexString(ddata2);
  35.                                 dd3=Integer.toHexString(ddata3);
  36.                                 dd4=Integer.toHexString(ddata4);
  37.                                 dd5=Integer.toHexString(ddata5);
  38.                                 handler.post(new Runnable() {
  39.                                     public void run() {
  40.                                             test2.setText(dd0+dd1+dd2+dd3+dd4+dd5);//最後在這邊讓test2這個textview顯示出來!
  41.                                     }
  42.                                 });
  43.                             }
  44.                     }
  45.             }catch(IOException e){
  46.                 //以下如果有錯誤就顯示出建立失敗!!!!
  47.                 handler.post(new Runnable() {
  48.                     public void run() {
  49.                         test.setText("建立socket失敗");
  50.                     }
  51.                 });
  52.             }
複製代碼


我竭盡所能地將我的code註解了一下
不知道我的理解有沒有錯誤!
我丟出來的資料是 0x70,0x60,0x50,0x40,0x30,0x20
那我再textview上面要顯示出  70 60 50 40 30 20
第一筆都能成功顯示,但第二筆就沒有辦法了
我自己有想過是否in裡面沒有資料(這也是版有給我的一些意見)
但是如果in沒有資料那第一筆資料也沒有辦法顯示吧...我是這麼想的不知道這個想法有沒有錯誤呢?
然後再來是後來我有在別的論壇上發問
他們是說in沒有改變所以...顯示都一樣
但我不知道要怎麼改變
不是只要丟出不同資料她會自己更新嗎?
麻煩版友們幫我解答了謝謝你們由衷感謝




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1