了了机器人开发日志

来源:互联网 发布:淘宝如何查看店铺粉丝 编辑:程序博客网 时间:2024/05/02 02:08

 


 <3.23>

   1.第三方的API的使用,机器人使用的是图灵提供的KEY

   2.ListView的多种item的布局

       2.1 定义一个URL,提供使用的Gson包

       2.2 doget方法返回结果

       2.3 URL以及编码的转换  如下

   

public class HttpUtils {/** *  * @author zhaogy * @project 定义一个 string url 定义个doget 方法 *  *  * */private static final String URl = "http://www.tuling123.com/openapi/api";// private static final String API_KEY ="8381bb52462ef312ebe4cb54b7ec8a6e";public static ChatMessage sendChatMessage(String msg) {ChatMessage chatMessage = new ChatMessage();String jsonRes = doGet(msg); // 用户得到返回结果 ,GSONGson gson = new Gson();Result result = null; // 有真有假 try catchtry {result = gson.fromJson(jsonRes, Result.class); // 把返回的字符串跟信息放到result中chatMessage.setMsg(result.getText());  // 注意IDE引入包的格式 } catch (Exception e) {// TODO: handle exceptionchatMessage.setMsg("服务器繁忙");} chatMessage.setDate(new  Date());    // 设置信息跟提示 chatMessage.setType(Type.INCOMING);return chatMessage;}

<3.24>

 1.编写一个工具类实现消息的发送跟接收

 2.搭建环境测试类

 3.bean的编写 返回chatmessage ,使用 doget 使用 Gson.jar

   

public class ChatMessageAdapter extends BaseAdapter {private LayoutInflater mInflater; // 给数据传到ADPTERprivate List<ChatMessage> mDatas;public ChatMessageAdapter(Context context, List<ChatMessage> mDatas) {mInflater = LayoutInflater.from(context);this.mDatas = mDatas;}@Overridepublic int getCount() {return mDatas.size();}@Overridepublic Object getItem(int position) {return mDatas.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic int getItemViewType(int position) { // 获取到的条目数据进行分配ChatMessage chatMessage = mDatas.get(position);if (chatMessage.getType() == com.example.bean.ChatMessage.Type.INCOMING) {return 0;} else {return 1;}}@Overridepublic int getViewTypeCount() {return 2;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) { // 通过convview// holder// 来实现语句对界面的实现ChatMessage chatMessage = mDatas.get(position);ViewHolder viewHolder = null;if (convertView == null) {if (getItemViewType(position) == 0) {convertView = mInflater.inflate(R.layout.item_from_msg, parent,false);viewHolder = new ViewHolder();viewHolder.mDate = (TextView) convertView.findViewById(R.id.id_form_msg_date);viewHolder.mMsgs = (TextView) convertView.findViewById(R.id.id_from_msgs_msg_info);} else {convertView = mInflater.inflate(R.layout.item_to_msg, parent,false);viewHolder = new ViewHolder();viewHolder.mDate = (TextView) convertView.findViewById(R.id.id_to_msg_date);viewHolder.mMsgs = (TextView) convertView.findViewById(R.id.id_to_msg_msg_info);}convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}// 设置数据SimpleDateFormat sFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 用来设置时间格式viewHolder.mDate.setText(sFormat.format(chatMessage.getDate()));  // 日期viewHolder.mMsgs.setText(chatMessage.getMsg());  // 获取信息return convertView;}private final class ViewHolder {TextView mDate;TextView mMsgs;}}

<3.25>

 1.布局的编写

 2.Adapter的使用 1.list 2.Adpter 3.数据源 

 3.通过itemtype的不同来设置布局

 4.考虑 子线程跟异步加载 刷新UI

public class MainActivity extends Activity {private ListView mMsgs;private ChatMessageAdapter mAdapter;private List<ChatMessage> mDatas;private EditText mInputMsgs;private Button mSendmsgs;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);};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);intview();intData();intlistener();}private void intlistener() {mSendmsgs.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubfinal String toMsgs = mInputMsgs.getText().toString();if (TextUtils.isEmpty(toMsgs)) {Toast.makeText(MainActivity.this, "发送信息不能为空",Toast.LENGTH_SHORT).show();return;}ChatMessage toMessage = new ChatMessage();toMessage.setDate(new Date());toMessage.setMsg(toMsgs);toMessage.setType(Type.OUTCOMING);mDatas.add(toMessage);mAdapter.notifyDataSetChanged(); // 通知更新mInputMsgs.setText("");// 网络操作不能在主线程 使用子线程进行信息的发送跟接收// 子线程不能更新主线的任务 所以使用 异步任务或handlernew Thread() {public void run() {ChatMessage fromMessage = HttpUtils.sendChatMessage(toMsgs);Message m = Message.obtain();m.obj = fromMessage;mHandler.sendMessage(m);};// ChatMessage fromMessage =// HttpUtils.sendChatMessage(toMsgs);}.start();// ChatMessage fromMessage = HttpUtils.sendChatMessage(toMsgs);}});}private void intData() {mDatas = new ArrayList<ChatMessage>();mDatas.add(new ChatMessage("您好,我是中国信息导航网的小二了了,我们的网址是(http://www.37698.cn)为您服务", Type.INCOMING, new Date()));// mDatas.add(new ChatMessage("你好", Type.OUTCOMING, new Date()));mAdapter = new ChatMessageAdapter(this, mDatas);mMsgs.setAdapter(mAdapter);}private void intview() { // 初始化// TODO Auto-generated method stubmMsgs = (ListView) findViewById(R.id.id_listview_msgs);mInputMsgs = (EditText) findViewById(R.id.id_input_msg);mSendmsgs = (Button) findViewById(R.id.id_send_msg);}}

<3.26>

  1.上传到安卓市场 作为离职时的礼物

  2.感谢开源的世界 感谢鸿洋大神

0 0