package com.ustc.dystu.dandelion;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import com.ustc.dystu.dandelion.adapter.ChatMessageAdapter;
import com.ustc.dystu.dandelion.bean.ChatMessage;
import com.ustc.dystu.dandelion.bean.ChatMessage.Type;
import com.ustc.dystu.dandelion.utils.HttpUtils;
public class RobotFragmentActivity extends FragmentActivity {
private ListView mMsgs;
private ChatMessageAdapter mAdapter;
private List<ChatMessage> mDatas;
private EditText mInputMsg;
private Button mSendMsg;
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
// 等待接收,子线程完成数据的返回
ChatMessage fromMessge = (ChatMessage) msg.obj;
mDatas.add(fromMessge);
mAdapter.notifyDataSetChanged();
mMsgs.setSelection(mDatas.size() - 1);
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_fragment_robot);
initView();
initDatas();
// 初始化事件
initListener();
}
private void initListener() {
mSendMsg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final String toMsg = mInputMsg.getText().toString();
if (TextUtils.isEmpty(toMsg)) {
Toast.makeText(RobotFragmentActivity.this, "发送消息不能为空!",
Toast.LENGTH_SHORT).show();
return;
}
ChatMessage toMessage = new ChatMessage();
toMessage.setDate(new Date());
toMessage.setMsg(toMsg);
toMessage.setType(Type.OUTCOMING);
mDatas.add(toMessage);
mAdapter.notifyDataSetChanged();
mMsgs.setSelection(mDatas.size()-1);
mInputMsg.setText("");
new Thread() {
public void run() {
ChatMessage fromMessage = HttpUtils.sendMessage(toMsg);
Message m = Message.obtain();
m.obj = fromMessage;
mHandler.sendMessage(m);
};
}.start();
}
});
}
private void initDatas() {
mDatas = new ArrayList<ChatMessage>();
mDatas.add(new ChatMessage("您好,我是机器人友友,我可以查公交,查天气,讲笑话,讲故事等等,让我来陪你吧.", Type.INCOMING, new Date()));
mAdapter = new ChatMessageAdapter(this, mDatas);
mMsgs.setAdapter(mAdapter);
}
private void initView() {
mMsgs = (ListView) findViewById(R.id.id_listview_msgs);
mInputMsg = (EditText) findViewById(R.id.id_input_msg);
mSendMsg = (Button) findViewById(R.id.id_send_msg);
}
}