package com.bigfat.turingrobot_yueban; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.ActionBarActivity; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; import com.bigfat.turingrobot_yueban.bin.ChatMessage; import com.bigfat.turingrobot_yueban.utils.HttpUtils; import java.util.ArrayList; import java.util.Date; import java.util.List; public class MainActivity extends ActionBarActivity implements View.OnClickListener { private ListView listView; private ChatMessageAdapter adapter; private List<ChatMessage> datas; private EditText inputMsg; private Button sendMsg; private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { //将接收的消息添加到主界面 ChatMessage fromMessage = (ChatMessage) msg.obj; datas.add(fromMessage); adapter.notifyDataSetChanged(); listView.setSelection(adapter.getCount() - 1); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().hide(); setContentView(R.layout.activity_main); initView(); initDatas(); initListener(); } private void initView() { listView = (ListView) findViewById(R.id.list_view); inputMsg = (EditText) findViewById(R.id.input_message); sendMsg = (Button) findViewById(R.id.send_message); } private void initDatas() { datas = new ArrayList<>(); datas.add(new ChatMessage("你好,月半兄为您服务", ChatMessage.Type.INCOMING, new Date())); adapter = new ChatMessageAdapter(this, datas); listView.setAdapter(adapter); } private void initListener() { sendMsg.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.send_message: final String toMsg = inputMsg.getText().toString().trim(); //清空输入框 inputMsg.setText(""); if (TextUtils.isEmpty(toMsg)) { Toast.makeText(MainActivity.this, "发送消息不能为空!", Toast.LENGTH_SHORT).show(); return; } //将发送消息添加到界面 ChatMessage toMessage = new ChatMessage(toMsg, ChatMessage.Type.OUTCOMING, new Date()); datas.add(toMessage); adapter.notifyDataSetChanged(); listView.setSelection(adapter.getCount() - 1); //开启线程发送消息,获取返回消息 new Thread(new Runnable() { @Override public void run() { ChatMessage fromMessage = HttpUtils.sendMessage(toMsg); Message m = Message.obtain(); m.obj = fromMessage; mHandler.sendMessage(m); } }).start(); break; } } }