80,351
社区成员
发帖
与我相关
我的任务
分享
void LoadPCMenu() {
new Thread() {
public void run() {
try {
Socket s = new Socket(strIP, Integer.parseInt(strPORT));
OutputStream out = s.getOutputStream();
out.write("1".getBytes());//发送1表示想要读取菜单
InputStream isStream = s.getInputStream();
OutputStream osStream = s.getOutputStream();
byte[] bRowNumber = new byte[4];
isStream.read(bRowNumber);//接收行数
int iRowNumber = ByteArrayToInt(bRowNumber); //把行数转换成int类型
datalist.clear();
int n=0;
byte []bLaJi = new byte[2];
String tempFenLei = "";// 每次收到分类都和这个比较,如果不同就把新分类保存到这里
for (int i = 0; i < iRowNumber; i++) {
byte[] bFenLei = new byte[1024];
n = isStream.read(bFenLei, 0, 4);
n = isStream.read(bFenLei, 0, 4);
int ibfLen = ByteArrayToInt(bFenLei);
bFenLei = new byte[ibfLen];
isStream.read(bFenLei, 0, ibfLen);
String strFenLei = new String(bFenLei, "UTF-8");//分类
strFenLei = strFenLei.trim();
if (!tempFenLei.equals(strFenLei))
tempFenLei = strFenLei;
tempFenLei.trim();
osStream.write(bLaJi);//发送垃圾数据表示接收完毕
byte[] bMingCheng = new byte[1024];
n = isStream.read(bMingCheng, 0, 4);
n = isStream.read(bMingCheng,0,4);
ibfLen = ByteArrayToInt(bMingCheng);
bMingCheng = new byte[ibfLen];
isStream.read(bMingCheng, 0, ibfLen);
String strMingCheng = new String(bMingCheng, "UTF-8");//名称
strMingCheng = strMingCheng.trim();
osStream.write(bLaJi);//发送垃圾数据表示接收完毕
byte[] bJiaGe = new byte[1024];
n = isStream.read(bJiaGe, 0, 4);
n = isStream.read(bJiaGe, 0, 4);
ibfLen = ByteArrayToInt(bJiaGe);
bJiaGe = new byte[ibfLen];
isStream.read(bJiaGe, 0, ibfLen);
double dJiaGe = bytes2Double(bJiaGe);
String strJiaGe = String.valueOf(dJiaGe);//价格
strJiaGe = strJiaGe.trim();
osStream.write(bLaJi);//发送垃圾数据表示接收完毕
byte[] bTuPianSize = new byte[4];
n = isStream.read(bTuPianSize,0,4);
n = isStream.read(bTuPianSize, 0, 4);
n = isStream.read(bTuPianSize, 0, 4);//接收图片大小
int iTuPianSize = ByteArrayToInt(bTuPianSize);
osStream.write(bLaJi);//发送垃圾数据表示接收完毕
byte[] bImage = new byte[iTuPianSize];
int offset = 0;
while (offset < iTuPianSize) {
n = isStream.read(bImage, offset, iTuPianSize - offset);//接收二进制形式的图片
offset += n;
}
osStream.write(bLaJi);//发送垃圾数据表示接收完毕
Bitmap tupian = BitmapFactory.decodeByteArray(bImage, 0, bImage.length);//把二进制形式的图片转换成 Bitmap 类型
Map<String, Object> map = new HashMap<String, Object>();
map.put("图片", tupian);
map.put("分类", strFenLei);
map.put("名称", strMingCheng);
map.put("价格", strJiaGe);
datalist.add(map);
}
s.close();
} catch (Exception ee) {
Toast.makeText(getApplicationContext(), ee.getMessage(), Toast.LENGTH_SHORT).show();
}
simpleAdapter = new SimpleAdapter(MainActivity.this,
datalist,
R.layout.menuitem,
new String[]{"图片","分类","名称", "价格"},
new int[]{R.id.imageView, R.id.CaiPinFenLei, R.id.CaiMing, R.id.JiaGe});
listView.setAdapter(simpleAdapter);
}
}.start();
}