Android 如何填充listview? public void Connect(最终字符串ip、最终int端口、最终字符串数据)引发IOException{ 线程t=新线程(){ @凌驾 公开募捐{ 试一试{ s=新插座(ip,端口); dos=新的DataOutputStream(s.getOutputStream()); dis=新的DataInputStream(s.getInputStream()); write(stringToBytesASCII(Data),0,Data.length()); dos.flush(); byte[]buff=新字节[dis.available()]; 显示读取(增益,0,增益长度); 地址=字符串(浅黄色); 地址列表。添加(地址); ArrayAdapter myAdapter=新的ArrayAdapter(MainActivity.this,R.layout.row_layout,addresslist); lstMicAdd.setAdapter(myAdapter); }捕获(IOE异常){ e、 printStackTrace(); } } }; t、 start();
当我从DataInputStream中获取数据[]时,我将其放置在Arraylist中。但当我运行它时,它在获取流后会继续停止。我的代码有什么问题?或者我将如何执行?请帮助 这是我的日志 04-03 10:57:20.362 1980-1995/www.siren.com.siren D/opengl﹕ 请求渲染脏区域:true 04-03 10:57:20.386 1980-1980/www.siren.com.siren D/﹕ HostConnection::get()新主机连接已建立0xae138ee0,tid 1980 04-03 10:57:20.415 1980-1980/www.siren.com.siren D/Atlas﹕ 正在验证映射 04-03 10:57:20.460 1980-1995/www.siren.com.siren D/﹕ HostConnection::get()新主机连接已建立0xa6c8d460,tid 1995 04-03 10:57:20.500 1980-1995/www.siren.com.siren I/opengl﹕ 已初始化EGL,版本1.4 04-03 10:57:20.700 1980-1995/www.siren.com.siren D/opengl﹕ 正在启用调试模式0 04-03 10:57:20.747 1980-1995/www.siren.com.siren W/EGL_仿真﹕ 未实现eglSurfaceAttrib 04-03 10:57:20.747 1980-1995/www.siren.com.siren W/opengl﹕ 未能在表面0xa6c8e220上设置EGL_交换行为,错误=EGL_成功 04-03 10:57:22.2171980-1980/www.siren.com.siren I/编舞﹕ 跳过81帧!应用程序可能在其主线程上做了太多工作 04-03 10:57:22.736 1980-1992/www.siren.com.siren I/art﹕ 背景部分并发标记扫描GC释放2473(121KB)AllocSpace对象,0(0B)LOS对象,9%空闲,18MB/20MB,暂停1.616ms总计181.248ms 04-03 10:57:22.812 1980-1995/www.siren.com.siren W/EGL_仿真﹕ 未实现eglSurfaceAttrib 04-03 10:57:22.812 1980-1995/www.siren.com.siren W/opengl﹕ 未能在表面0xa6cb5de0上设置EGL_交换_行为,错误=EGL_成功 04-03 10:57:24.224 1980-1980/www.siren.com.siren I/编舞﹕ 跳过了80帧!应用程序可能在其主线程上做了太多工作 04-03 11:00:10.990 1980-1995/www.siren.com.siren W/EGL_仿真﹕ 未实现eglSurfaceAttrib 04-03 11:00:10.990 1980-1995/www.siren.com.siren W/opengl﹕ 未能在表面0xa6cb5de0上设置EGL_交换_行为,错误=EGL_成功 04-03 11:02:27.930 1980-1980/www.siren.com.siren I/编舞﹕ 跳过34帧!应用程序可能在其主线程上做了太多工作 04-03 11:03:12.926 1980-1980/www.siren.com.siren I/编舞﹕ 跳过38帧!应用程序可能在其主线程上做了太多工作。 04-03 11:03:13.725 1980-1995/www.siren.com.siren W/EGL_仿真﹕ 未实现eglSurfaceAttrib 04-03 11:03:13.725 1980-1995/www.siren.com.siren W/opengl﹕ 未能在表面0xa6c8eb80上设置EGL_交换行为,错误=EGL_成功 04-03 11:03:15.416 1980-1980/www.siren.com.siren I/编舞﹕ 跳过148帧!应用程序可能在其主线程上做了太多工作 04-03 11:03:17.634 1980-1980/www.siren.com.siren I/编舞﹕ 跳过132帧!应用程序可能在其主线程上做了太多工作 这是我的全部密码 公共类MainActivity扩展了活动{Android 如何填充listview? public void Connect(最终字符串ip、最终int端口、最终字符串数据)引发IOException{ 线程t=新线程(){ @凌驾 公开募捐{ 试一试{ s=新插座(ip,端口); dos=新的DataOutputStream(s.getOutputStream()); dis=新的DataInputStream(s.getInputStream()); write(stringToBytesASCII(Data),0,Data.length()); dos.flush(); byte[]buff=新字节[dis.available()]; 显示读取(增益,0,增益长度); 地址=字符串(浅黄色); 地址列表。添加(地址); ArrayAdapter myAdapter=新的ArrayAdapter(MainActivity.this,R.layout.row_layout,addresslist); lstMicAdd.setAdapter(myAdapter); }捕获(IOE异常){ e、 printStackTrace(); } } }; t、 start();,android,listview,network-programming,Android,Listview,Network Programming,当我从DataInputStream中获取数据[]时,我将其放置在Arraylist中。但当我运行它时,它在获取流后会继续停止。我的代码有什么问题?或者我将如何执行?请帮助 这是我的日志 04-03 10:57:20.362 1980-1995/www.siren.com.siren D/opengl﹕ 请求渲染脏区域:true 04-03 10:57:20.386 1980-1980/www.siren.com.siren D/﹕ HostConnection::get()新主机连接已建立0x
public void Connect(final String ip, final int port, final String Data) throws IOException {
Thread t = new Thread(){
@Override
public void run() {
try {
s = new Socket(ip, port);
dos = new DataOutputStream(s.getOutputStream());
dis = new DataInputStream(s.getInputStream());
dos.write(stringToBytesASCII(Data),0,Data.length());
dos.flush();
byte[] buff = new byte[dis.available()];
dis.read(buff,0,buff.length);
address = AsciiToString(buff);
addresslist.add(address);
ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(MainActivity.this, R.layout.row_layout, addresslist);
lstMicAdd.setAdapter(myAdapter);
} catch ( IOException e) {
e.printStackTrace();
}
}
};
t.start();
public static final int REQUEST\u code\u ONE=100;
专用按钮BTN连接;
私人按钮BTN设置;
私人按钮btnDisc;
私有列表视图lstMicAdd;
私人插座;
私有数据输出流dos;
私有数据输入流dis;
字符串地址;
数据库处理程序;
字符串设置SIP;
受保护的国际设置运动;
字符串名;
List addresslist=new ArrayList();
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnConnect=(按钮)findViewById(R.id.btnConnect);
BTN设置=(按钮)findViewById(R.id.BTN设置);
btnDisc=(按钮)findViewById((R.id.btnDisc));
dbHandler=newdatabasehandled(getApplicationContext());
Name=dbHandler.getLastNameRecord();
settingsIp=dbHandler.getLastIprecord();
settingsPort=Integer.parseInt(dbHandler.getLastPortRecord());
btnDisc.setEnabled(false);
lstMicAdd=(ListView)findViewById(R.id.lstMicAdd);
//设置按钮
btnSettings.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(MainActivity.this、settings.class);
startActivityForResult(意图、请求代码);
}
});
//连接按钮
btnConnect.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
试一试{
连接(设置SIP、设置Sport、“安卓”+名称);
}捕获(IOE异常){
e、 printStackTrace();
}
}
});
//断开按钮
btnDisc.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
public static final int REQUEST_CODE_ONE = 100;
private Button btnConnect;
private Button btnSettings;
private Button btnDisc;
private ListView lstMicAdd;
private Socket s;
private DataOutputStream dos;
private DataInputStream dis;
String address;
DatabaseHandled dbHandler;
String settingsIp;
protected int settingsPort;
String Name;
List<String> addresslist = new ArrayList<String>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnConnect = (Button) findViewById(R.id.btnConnect);
btnSettings = (Button) findViewById(R.id.btnSettings);
btnDisc = (Button) findViewById((R.id.btnDisc));
dbHandler = new DatabaseHandled(getApplicationContext());
Name = dbHandler.getLastNameRecord();
settingsIp = dbHandler.getLastIprecord();
settingsPort = Integer.parseInt(dbHandler.getLastPortRecord());
btnDisc.setEnabled(false);
lstMicAdd = (ListView) findViewById(R.id.lstMicAdd);
//Settings Button
btnSettings.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent (MainActivity.this , settings.class);
startActivityForResult(intent, REQUEST_CODE_ONE);
}
});
//Connect Button
btnConnect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
Connect(settingsIp, settingsPort, "Android_" + Name);
} catch (IOException e) {
e.printStackTrace();
}
}
});
//Disconnect Button
btnDisc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_CODE_ONE){
if (resultCode == RESULT_OK) {
settingsPort = data.getIntExtra("Port",-1);
settingsIp = data.getStringExtra("Ip-Address");
}
}
super.onActivityResult(requestCode, resultCode, data);
}
public void Connect(final String ip, final int port, final String Data) throws IOException {
Thread t = new Thread(){
@Override
public void run() {
try {
s = new Socket(ip, port);
dos = new DataOutputStream(s.getOutputStream());
dis = new DataInputStream(s.getInputStream());
dos.write(stringToBytesASCII(Data),0,Data.length());
dos.flush();
byte[] buff = new byte[dis.available()];
dis.read(buff,0,buff.length);
address = AsciiToString(buff);
addresslist.add(address);
} catch ( IOException e) {
e.printStackTrace();
}
ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(MainActivity.this, R.layout.row_layout, addresslist);
lstMicAdd.setAdapter(myAdapter);
}
};
t.start();
}
public static byte[] stringToBytesASCII(String Data) {
byte[] b = new byte[Data.length()];
for (int i = 0; i < b.length; i++) {
b[i] = (byte) Data.charAt(i);
}
return b;
}
public static String AsciiToString(byte[] Data) {
StringBuilder sb = new StringBuilder(Data.length);
for (int i = 0; i < Data.length; ++ i) {
if (Data[i] < 0) throw new IllegalArgumentException();
sb.append((char) Data[i]);
}
return sb.toString();
}
public void Alert (){
AlertDialog myDialog = new AlertDialog.Builder(MainActivity.this).create();
myDialog.setTitle("Error");
myDialog.setMessage("No Connection");
myDialog.show();
}