Android 台灣中文網
標題:
加入loop讓接收到的數據可以更新顯示在textview
[打印本頁]
作者:
kansas73
時間:
2015-3-5 17:13
標題:
加入loop讓接收到的數據可以更新顯示在textview
我想要寫一隻APP可以接收我從client丟出來的資料並且顯示
現在問題在於我只能顯示出我丟出的第一筆資料
而第二筆資料卻無法顯示出來,即使丟出第二筆還是只有顯示第一筆資料
try{
//建立serverSocket
serverSocket = new ServerSocket(8080);
//等待連線
while (true) {
//接收連線
Socket client = serverSocket.accept();
handler.post(new Runnable() {
public void run() {
test.setText("Connected.");//如果建立成功 顯示connected
}
});
DataInputStream in = new DataInputStream(client.getInputStream());//取得dataoutputstream並放置於in
while(in!=null){ //當in裡面有值的時候執行以下的動作
//接收資料
byte[] re = new byte[6];//先開個re的陣列大小為6
in.read(re); //並把in讀進來放進re
short tmp[] = {(short) (0xff & re[0]), //tmp負責處理我所丟過來的封包格式
(short) (0xff & re[1]), //例如 傳送0x70在textview上則顯示70
(short) (0xff & re[2]), //以此類推
(short) (0xff & re[3]),
(short) (0xff & re[4]),
(short) (0xff & re[5]),};
int ddata0,ddata1,ddata2,ddata3,ddata4,ddata5; //將處理完的封包格式放進來
ddata0=tmp[0];
ddata1=tmp[1];
ddata2=tmp[2];
ddata3=tmp[3];
ddata4=tmp[4];
ddata5=tmp[5];
dd0=Integer.toHexString(ddata0); //格式轉換就不說明了
dd1=Integer.toHexString(ddata1);
dd2=Integer.toHexString(ddata2);
dd3=Integer.toHexString(ddata3);
dd4=Integer.toHexString(ddata4);
dd5=Integer.toHexString(ddata5);
handler.post(new Runnable() {
public void run() {
test2.setText(dd0+dd1+dd2+dd3+dd4+dd5);//最後在這邊讓test2這個textview顯示出來!
}
});
}
}
}catch(IOException e){
//以下如果有錯誤就顯示出建立失敗!!!!
handler.post(new Runnable() {
public void run() {
test.setText("建立socket失敗");
}
});
}
複製代碼
我竭盡所能地將我的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