public Handler receiveHandler = new Handler() {
public void handleMessage(Message msg) {
String str = (String) msg.obj;
edtReceiveInfo.setText(str);
}
};
public class udpReceiveThread extends Thread {
@Override
public void run() {
try {
while (true) {
socket = new DatagramSocket(Integer.parseInt(edtReceivePort
.getText().toString()));
listenStatus = true;
while (listenStatus) {
byte[] inBuf = new byte[1024];
DatagramPacket inPacket = new DatagramPacket(inBuf,
inBuf.length);
socket.receive(inPacket);
String str = new String(inPacket.getData());
receiveInfo = Change1(str, inPacket.getLength());
// Log.i("dianwei",receiveInfo);
for (int i = 0; i < receiveInfo.size(); i++) {
Message msg = new Message();
if (receiveInfo != null && receiveInfo.size() > 0
&& !(receiveInfo.size() == i)) {
msg.obj = receiveInfo.get(i);
msg.what = 0;
receiveHandler.sendMessage(msg);}
}socket.close();
}
} catch (Exception e) {
try {
udpReceiveThread.sleep(1000);
}
catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}}
我现在遇到的问题是:我用网络调试助手循环发送数据的时候,能接收到,但是显示的时候有问题,用settext时候,只能显示最后一个数据,用uppend的时候,我所有的数据循环显示,我想要一个个更新显示在我的界面上,大家有什么好方法吗?
没有adapter吗?
不知道你是哪种更新,不过既然已经取到值了,可以吧循环的值赋给一个list集合或者hashmap
然后主要逻辑就集中在handler里面了,想怎么赋值就怎么取值就可以了
Thread thread = new Thread(new Runnable() {
public void run() {
if (getReceiveInfo() != null && !(getReceiveInfo().size() == i) && getReceiveInfo().size() > 0){
Message msg = new Message();
msg.obj = getReceiveInfo().get(i);
try {
Thread.sleep(500);
} catch (Exception e) {
}
msg.what = 0;
receiveHandler.sendMessage(msg);
Log.i("dianwei",getReceiveInfo().get(i));
}
}
});
thread.start();