网上说 加下面的属性
-
android:stackFromBottom="false"
-
android:transcriptMode="normal"
这个只能保证 进入界面 listview 数据在底部展示
经过我的 百度 研究 结合
应该这样写 :
//在长链接的服务内的onMessage 方法内
//长链接的接收服务器返回的,用户发送的某一条信息,发送广播,通知主角面刷新信息列表
@Override
public void onMessage(WebSocket webSocket, String text) {
//接收消息的回调
super.onMessage(webSocket, text);
//收到服务器端传过来的消息text
//接收信息,发送广播 用于刷新ui
Intent intent = new Intent();
intent.setAction(data);
intent.putExtra("json", text);
sendBroadcast(intent);
}
//主界面 ,注册广播,接受长链接 发送过来的信息
IntentFilter filter = new IntentFilter();
filter.addAction(Socket_BackService.data_agin);
registerReceiver(updata_chatlist, filter);
private BroadcastReceiver updata_chatlist = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//在 长链接的接受数据的回调内,服务器返回新发信息,将新发的数据追加到原始数据列表中
try {
JSONObject jsonObject = new JSONObject(intent.getStringExtra("json"));
Entity_Chat_History entity_chat_history;
entity_chat_history = new Entity_Chat_History();
entity_chat_history.setName(jsonObject.getString("name"));
entity_chat_history.setId(jsonObject.getString("id"));
entity_chat_history.setImage(jsonObject.getString("image"));
entity_chat_history.setBody(jsonObject.getString("body"));
entity_chat_history.setTime(jsonObject.getString("time"));
chat_datalist.add(entity_chat_history);
//总是只显示50条
if (chat_datalist.size() > 50) {
chat_datalist.remove(0);
}
//开启 Ui 线程刷新界面,让列表总是显示最新一条数据
runOnUiThread(new Runnable() {
public void run() {
adapter_chatRoom.notifyDataSetChanged();
mListView.setSelection(chat_datalist.size());
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
};
亲测可行,解决了你的问题的话 给个赞哦, 这个也困扰了我快一下午 我擦