2014-08-31 76 views
1

我有一个android应用程序,它列出了listview中连接的客户端,但每当有人连接时,它只是将它们添加到同一行,这是我用来添加连接客户端的代码。我是新来的listview,并不知道如何正确地做到这一点,我看着android文档,但很难说什么需要使用。如果任何人都可以帮助我,那会很棒。Listview添加到同一行

remoteip += socket.getInetAddress(); 

ArrayList<String> addclientlist = new ArrayList<String>(); 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainserverActivity.this, 
android.R.layout.simple_list_item_1, android.R.id.text1, addclientlist); 

addclientlist.add(remoteip); 
adapter.notifyDataSetChanged(); 
listview.setAdapter(adapter) 

回答

1

我认为你需要使用此构造

ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainserverActivity.this, android.R.layout.simple_list_item_1, addclientlist); 

也没必要设置适配器始终只设置一次,每次都将新项目添加到适配器中,您可以使用这些中的任何一项,如在Java中Array对象通过引用传递,然后调用notifydatasetchanged

adapter.add(remoteip); 
//or addclientlist.add(remoteip); 
adapter.notifyDataSetChanged(); // Dont forget this 
+0

它似乎工作,但当第二个客户端连接它输入第一个IP地址(从第一行)到第二个项目列表像这样/ firstipaddress/secondipaddress,如果第三个项目连接它将是/ firstipaddress/secondipaddress/thirdipaddress 编辑;从来没有想过我在remoteip + = socket.getInetAddress中弄清楚了,我不得不删除+使其成为=并且都很好。 – andyADD 2014-08-31 19:11:39

1

您正在更新适配器初始化列表,这是徒劳的。

相反 - 更新实际适配器:

adapter = new ArrayAdapter<String>(MainserverActivity.this, 
            android.R.layout.simple_list_item_1, android.R.id.text1, addclientlist); 
listview.setAdapter(adapter) 
........... 

adapter.add(remoteip); // <----- instead of addclientlist.add() 
adapter.notifyDataSetChanged(); 
+0

感谢您的回复,我很感激,但不幸的是我仍然得到相同的结果。仍然添加到同一行。 – andyADD 2014-08-31 18:19:08