我使用这个AsyncTask从HC-06获取大量字符串。我正确接收它们,但有时字符串出现在 ListView 上的不同行上。
例如,如果我发送arduino Ide jghv,我在第一行得到j,在第二行得到ghv深BLE_Activity: jD/BLE_Activity:生长激素
有人可以告诉我我做错了什么吗?
private class Stream extends AsyncTask<Void, Void, Void>
{
protected Void doInBackground(Void... devices)
{
try {
while (btSocket.isConnected()) {
char[] buffer = new char[256];
int bytes;
InputStream tmpIn = btSocket.getInputStream();
InputStreamReader red = new InputStreamReader(tmpIn);
bytes = red.read(buffer);
String readMessage = new String(buffer, 0, bytes);
Log.d(TAG, readMessage);
Array.add(readMessage);
if (isCancelled()) break;
}
} catch (IOException e) {
}
return null;
}
}
这就是我创建列表视图的方式
adapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, Array);
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
sItems = (ListView) findViewById(R.id.Stream);
sItems.setAdapter(adapter);
这是数组和适配器的声明
List<String> Array = new ArrayList<String>();
ArrayAdapter<String> adapter;
感谢大家
尝试逐行读取输入流中的文本
BufferedReader br = new BufferedReader(red);
String line;
while ((line = br.readLine()) != null) {
Array.add(line);
}