{"id":29468,"date":"2024-11-25T09:11:31","date_gmt":"2024-11-25T01:11:31","guid":{"rendered":"https:\/\/fwq.ai\/blog\/29468\/"},"modified":"2024-11-25T09:11:31","modified_gmt":"2024-11-25T01:11:31","slug":"%e8%af%a6%e8%a7%a3android%e9%ab%98%e4%bb%bf%e5%be%ae%e4%bf%a1%e8%81%8a%e5%a4%a9%e7%95%8c%e9%9d%a2%e5%ae%9e%e4%be%8b","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/29468\/","title":{"rendered":"\u8be6\u89e3Android\u9ad8\u4eff\u5fae\u4fe1\u804a\u5929\u754c\u9762\u5b9e\u4f8b"},"content":{"rendered":"<p style=\"text-align: left\">\u5fae\u4fe1\u804a\u5929\u73b0\u5728\u975e\u5e38\u706b\uff0c\u662f\u56e0\u5176\u754c\u9762\u6f02\u4eae\u5417\uff0c\u54c8\u54c8\uff0c\u4e5f\u8bb8\u5427\u3002\u5fae\u4fe1\u6bcf\u6761\u6d88\u606f\u90fd\u5e26\u6709\u4e00\u4e2a\u6c14\u6ce1\uff0c\u975e\u5e38\u8ff7\u4eba\uff0c\u770b\u8d77\u6765\u611f\u89c9\u5b9e\u73b0\u8d77\u6765\u975e\u5e38\u96be\uff0c\u5176\u5b9e\u5e76\u4e0d\u96be\u3002\u4e0b\u9762\u5c0f\u7f16\u7ed9\u5927\u5bb6\u5206\u4eab\u5b9e\u73b0\u4ee3\u7801<\/p>\n<p style=\"text-align: left\">\u5148\u7ed9\u5927\u5bb6\u5c55\u793a\u4e0b\u5b9e\u73b0\u6548\u679c\u56fe\uff1a<\/p>\n<p style=\"text-align: left\"><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/000\/013\/3d3b3beb444eb3cab8fd940bfc1624f2-0.jpg\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u8be6\u89e3Android\u9ad8\u4eff\u5fae\u4fe1\u804a\u5929\u754c\u9762\u5b9e\u4f8b\u63d2\u56fe\" alt=\"\u8be6\u89e3Android\u9ad8\u4eff\u5fae\u4fe1\u804a\u5929\u754c\u9762\u5b9e\u4f8b\u63d2\u56fe\" \/><\/p>\n<p style=\"text-align: left\">OK\uff0c\u4e0b\u9762\u6211\u4eec\u6765\u770b\u4e00\u4e0b\u6574\u4e2a\u5c0f\u9879\u76ee\u7684\u4e3b\u4f53\u7ed3\u6784\uff1a<\/p>\n<p style=\"text-align: left\"><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/000\/013\/3d3b3beb444eb3cab8fd940bfc1624f2-1.jpg\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u8be6\u89e3Android\u9ad8\u4eff\u5fae\u4fe1\u804a\u5929\u754c\u9762\u5b9e\u4f8b\u63d2\u56fe1\" alt=\"\u8be6\u89e3Android\u9ad8\u4eff\u5fae\u4fe1\u804a\u5929\u754c\u9762\u5b9e\u4f8b\u63d2\u56fe1\" \/><\/p>\n<p style=\"text-align: left\"><strong>\u4e0b\u9762\u662fActivity\u7684\u4ee3\u7801\uff1a<\/strong><\/p>\n<pre>package com.way.demo; \r\nimport java.text.SimpleDateFormat; \r\nimport java.util.ArrayList; \r\nimport java.util.Date; \r\nimport java.util.List; \r\nimport android.app.Activity; \r\nimport android.os.Bundle; \r\nimport android.view.View; \r\nimport android.view.View.OnClickListener; \r\nimport android.widget.Button; \r\nimport android.widget.EditText; \r\nimport android.widget.ListView; \r\n\/** \r\n* @author way \r\n*\/ \r\npublic class WeixinChatDemoActivity extends Activity implements OnClickListener { \r\nprivate Button mBtnSend;\/\/ \u53d1\u9001btn \r\nprivate Button mBtnBack;\/\/ \u8fd4\u56debtn \r\nprivate EditText mEditTextContent; \r\nprivate ListView mListView; \r\nprivate ChatMsgViewAdapter mAdapter;\/\/ \u6d88\u606f\u89c6\u56fe\u7684Adapter \r\nprivate List&lt;ChatMsgEntity&gt; mDataArrays = new ArrayList&lt;ChatMsgEntity&gt;();\/\/ \u6d88\u606f\u5bf9\u8c61\u6570\u7ec4 \r\npublic void onCreate(Bundle savedInstanceState) { \r\nsuper.onCreate(savedInstanceState); \r\nsetContentView(R.layout.main); \r\ninitView();\/\/ \u521d\u59cb\u5316view \r\ninitData();\/\/ \u521d\u59cb\u5316\u6570\u636e \r\nmListView.setSelection(mAdapter.getCount() - 1); \r\n} \r\n\/** \r\n* \u521d\u59cb\u5316view \r\n*\/ \r\npublic void initView() { \r\nmListView = (ListView) findViewById(R.id.listview); \r\nmBtnSend = (Button) findViewById(R.id.btn_send); \r\nmBtnSend.setOnClickListener(this); \r\nmBtnBack = (Button) findViewById(R.id.btn_back); \r\nmBtnBack.setOnClickListener(this); \r\nmEditTextContent = (EditText) findViewById(R.id.et_sendmessage); \r\n} \r\nprivate String[] msgArray = new String[] { \"\u6709\u5927\u5417\", \"\u6709\uff01\u4f60\u5462\uff1f\", \"\u6211\u4e5f\u6709\", \"\u90a3\u4e0a\u5427\", \r\n\"\u6253\u554a\uff01\u4f60\u653e\u5927\u554a\uff01\", \"\u4f60TM\u548b\u4e0d\u653e\u5927\u5462\uff1f\u7559\u5927\u62a2\u4eba\u5934\u554a\uff1fCAO\uff01\u4f60\u4e2a\u83dcB\", \"2B\u4e0d\u89e3\u91ca\", \"\u5c3c\u6eda...\", \r\n\"\u4eca\u665a\u53bb\u7f51\u5427\u5305\u591c\u5427\uff1f\", \"\u6709\u6bdb\u7247\u5417\uff1f\", \"\u79cd\u5b50\u4e00\u5927\u5806\u554a~\u8fd8\u6015\u6ca1\u7247\uff1f\", \"OK,\u641e\u8d77\uff01\uff01\" }; \r\nprivate String[] dataArray = new String[] { \"2012-09-22 18:00:02\", \r\n\"2012-09-22 18:10:22\", \"2012-09-22 18:11:24\", \r\n\"2012-09-22 18:20:23\", \"2012-09-22 18:30:31\", \r\n\"2012-09-22 18:35:37\", \"2012-09-22 18:40:13\", \r\n\"2012-09-22 18:50:26\", \"2012-09-22 18:52:57\", \r\n\"2012-09-22 18:55:11\", \"2012-09-22 18:56:45\", \r\n\"2012-09-22 18:57:33\", }; \r\nprivate final static int COUNT = 12;\/\/ \u521d\u59cb\u5316\u6570\u7ec4\u603b\u6570 \r\n\/** \r\n* \u6a21\u62df\u52a0\u8f7d\u6d88\u606f\u5386\u53f2\uff0c\u5b9e\u9645\u5f00\u53d1\u53ef\u4ee5\u4ece\u6570\u636e\u5e93\u4e2d\u8bfb\u51fa \r\n*\/ \r\npublic void initData() { \r\nfor (int i = 0; i &lt; COUNT; i++) { \r\nChatMsgEntity entity = new ChatMsgEntity(); \r\nentity.setDate(dataArray[i]); \r\nif (i % 2 == 0) { \r\nentity.setName(\"\u8096B\"); \r\nentity.setMsgType(true);\/\/ \u6536\u5230\u7684\u6d88\u606f \r\n} else { \r\nentity.setName(\"\u5fc5\u8d25\"); \r\nentity.setMsgType(false);\/\/ \u81ea\u5df1\u53d1\u9001\u7684\u6d88\u606f \r\n} \r\nentity.setMessage(msgArray[i]); \r\nmDataArrays.add(entity); \r\n} \r\nmAdapter = new ChatMsgViewAdapter(this, mDataArrays); \r\nmListView.setAdapter(mAdapter); \r\n} \r\n@Override \r\npublic void onClick(View v) { \r\nswitch (v.getId()) { \r\ncase R.id.btn_send:\/\/ \u53d1\u9001\u6309\u94ae\u70b9\u51fb\u4e8b\u4ef6 \r\nsend(); \r\nbreak; \r\ncase R.id.btn_back:\/\/ \u8fd4\u56de\u6309\u94ae\u70b9\u51fb\u4e8b\u4ef6 \r\nfinish();\/\/ \u7ed3\u675f,\u5b9e\u9645\u5f00\u53d1\u4e2d\uff0c\u53ef\u4ee5\u8fd4\u56de\u4e3b\u754c\u9762 \r\nbreak; \r\n} \r\n} \r\n\/** \r\n* \u53d1\u9001\u6d88\u606f \r\n*\/ \r\nprivate void send() { \r\nString contString = mEditTextContent.getText().toString(); \r\nif (contString.length() &gt; 0) { \r\nChatMsgEntity entity = new ChatMsgEntity(); \r\nentity.setName(\"\u5fc5\u8d25\"); \r\nentity.setDate(getDate()); \r\nentity.setMessage(contString); \r\nentity.setMsgType(false); \r\nmDataArrays.add(entity); \r\nmAdapter.notifyDataSetChanged();\/\/ \u901a\u77e5ListView\uff0c\u6570\u636e\u5df2\u53d1\u751f\u6539\u53d8 \r\nmEditTextContent.setText(\"\");\/\/ \u6e05\u7a7a\u7f16\u8f91\u6846\u6570\u636e \r\nmListView.setSelection(mListView.getCount() - 1);\/\/ \u53d1\u9001\u4e00\u6761\u6d88\u606f\u65f6\uff0cListView\u663e\u793a\u9009\u62e9\u6700\u540e\u4e00\u9879 \r\n} \r\n} \r\n\/** \r\n* \u53d1\u9001\u6d88\u606f\u65f6\uff0c\u83b7\u53d6\u5f53\u524d\u4e8b\u4ef6 \r\n* \r\n* @return \u5f53\u524d\u65f6\u95f4 \r\n*\/ \r\nprivate String getDate() { \r\nSimpleDateFormat format = new SimpleDateFormat(\"yyyy-MM-dd hh:mm:ss\"); \r\nreturn format.format(new Date()); \r\n} \r\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p style=\"text-align: left\"><strong>ListView\u7684\u4ee3\u7801\uff1a<\/strong><\/p>\n<pre>package com.way.demo; \r\nimport java.util.List; \r\nimport android.content.Context; \r\nimport android.view.LayoutInflater; \r\nimport android.view.View; \r\nimport android.view.ViewGroup; \r\nimport android.widget.BaseAdapter; \r\nimport android.widget.TextView; \r\n\/** \r\n* \u6d88\u606fListView\u7684Adapter \r\n* \r\n* @author way \r\n*\/ \r\npublic class ChatMsgViewAdapter extends BaseAdapter { \r\npublic static interface IMsgViewType { \r\nint IMVT_COM_MSG = 0;\/\/ \u6536\u5230\u5bf9\u65b9\u7684\u6d88\u606f \r\nint IMVT_TO_MSG = 1;\/\/ \u81ea\u5df1\u53d1\u9001\u51fa\u53bb\u7684\u6d88\u606f \r\n} \r\nprivate static final int ITEMCOUNT = 2;\/\/ \u6d88\u606f\u7c7b\u578b\u7684\u603b\u6570 \r\nprivate List&lt;ChatMsgEntity&gt; coll;\/\/ \u6d88\u606f\u5bf9\u8c61\u6570\u7ec4 \r\nprivate LayoutInflater mInflater; \r\npublic ChatMsgViewAdapter(Context context, List&lt;ChatMsgEntity&gt; coll) { \r\nthis.coll = coll; \r\nmInflater = LayoutInflater.from(context); \r\n} \r\npublic int getCount() { \r\nreturn coll.size(); \r\n} \r\npublic Object getItem(int position) { \r\nreturn coll.get(position); \r\n} \r\npublic long getItemId(int position) { \r\nreturn position; \r\n} \r\n\/** \r\n* \u5f97\u5230Item\u7684\u7c7b\u578b\uff0c\u662f\u5bf9\u65b9\u53d1\u8fc7\u6765\u7684\u6d88\u606f\uff0c\u8fd8\u662f\u81ea\u5df1\u53d1\u9001\u51fa\u53bb\u7684 \r\n*\/ \r\npublic int getItemViewType(int position) { \r\nChatMsgEntity entity = coll.get(position); \r\nif (entity.getMsgType()) {\/\/\u6536\u5230\u7684\u6d88\u606f \r\nreturn IMsgViewType.IMVT_COM_MSG; \r\n} else {\/\/\u81ea\u5df1\u53d1\u9001\u7684\u6d88\u606f \r\nreturn IMsgViewType.IMVT_TO_MSG; \r\n} \r\n} \r\n\/** \r\n* Item\u7c7b\u578b\u7684\u603b\u6570 \r\n*\/ \r\npublic int getViewTypeCount() { \r\nreturn ITEMCOUNT; \r\n} \r\npublic View getView(int position, View convertView, ViewGroup parent) { \r\nChatMsgEntity entity = coll.get(position); \r\nboolean isComMsg = entity.getMsgType(); \r\nViewHolder viewHolder = null; \r\nif (convertView == null) { \r\nif (isComMsg) { \r\nconvertView = mInflater.inflate( \r\nR.layout.chatting_item_msg_text_left, null); \r\n} else { \r\nconvertView = mInflater.inflate( \r\nR.layout.chatting_item_msg_text_right, null); \r\n} \r\nviewHolder = new ViewHolder(); \r\nviewHolder.tvSendTime = (TextView) convertView \r\n.findViewById(R.id.tv_sendtime); \r\nviewHolder.tvUserName = (TextView) convertView \r\n.findViewById(R.id.tv_username); \r\nviewHolder.tvContent = (TextView) convertView \r\n.findViewById(R.id.tv_chatcontent); \r\nviewHolder.isComMsg = isComMsg; \r\nconvertView.setTag(viewHolder); \r\n} else { \r\nviewHolder = (ViewHolder) convertView.getTag(); \r\n} \r\nviewHolder.tvSendTime.setText(entity.getDate()); \r\nviewHolder.tvUserName.setText(entity.getName()); \r\nviewHolder.tvContent.setText(entity.getMessage()); \r\nreturn convertView; \r\n} \r\nstatic class ViewHolder { \r\npublic TextView tvSendTime; \r\npublic TextView tvUserName; \r\npublic TextView tvContent; \r\npublic boolean isComMsg = true; \r\n} \r\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p style=\"text-align: left\"><strong>\u6d88\u606f\u5bf9\u8c61\u7684\u4ee3\u7801\uff1a<\/strong><\/p>\n<pre>package com.way.demo; \r\n\/** \r\n* \u4e00\u4e2a\u6d88\u606f\u7684JavaBean \r\n* \r\n* @author way \r\n* \r\n*\/ \r\npublic class ChatMsgEntity { \r\nprivate String name;\/\/\u6d88\u606f\u6765\u81ea \r\nprivate String date;\/\/\u6d88\u606f\u65e5\u671f \r\nprivate String message;\/\/\u6d88\u606f\u5185\u5bb9 \r\nprivate boolean isComMeg = true;\/\/ \u662f\u5426\u4e3a\u6536\u5230\u7684\u6d88\u606f \r\npublic String getName() { \r\nreturn name; \r\n} \r\npublic void setName(String name) { \r\nthis.name = name; \r\n} \r\npublic String getDate() { \r\nreturn date; \r\n} \r\npublic void setDate(String date) { \r\nthis.date = date; \r\n} \r\npublic String getMessage() { \r\nreturn message; \r\n} \r\npublic void setMessage(String message) { \r\nthis.message = message; \r\n} \r\npublic boolean getMsgType() { \r\nreturn isComMeg; \r\n} \r\npublic void setMsgType(boolean isComMsg) { \r\nisComMeg = isComMsg; \r\n} \r\npublic ChatMsgEntity() { \r\n} \r\npublic ChatMsgEntity(String name, String date, String text, boolean isComMsg) { \r\nsuper(); \r\nthis.name = name; \r\nthis.date = date; \r\nthis.message = text; \r\nthis.isComMeg = isComMsg; \r\n} \r\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p style=\"text-align: left\">\u4ee5\u4e0a\u6240\u8ff0\u662f\u5c0f\u7f16\u7ed9\u5927\u5bb6\u5206\u4eab\u7684Android\u9ad8\u4eff\u5fae\u4fe1\u804a\u5929\u754c\u9762\u4ee3\u7801\u5206\u4eab\uff0c\u5e0c\u671b\u5bf9\u5927\u5bb6\u6709\u6240\u5e2e\u52a9\u3002<\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u8be6\u89e3Android\u9ad8\u4eff\u5fae\u4fe1\u804a\u5929\u754c\u9762\u5b9e\u4f8b\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5fae\u4fe1\u804a\u5929\u73b0\u5728\u975e\u5e38\u706b\uff0c\u662f\u56e0\u5176\u754c\u9762\u6f02\u4eae\u5417\uff0c\u54c8\u54c8\uff0c\u4e5f\u8bb8\u5427\u3002\u5fae\u4fe1\u6bcf\u6761\u6d88\u606f\u90fd\u5e26\u6709\u4e00\u4e2a\u6c14\u6ce1\uff0c\u975e\u5e38\u8ff7\u4eba\uff0c\u770b\u8d77\u6765\u611f\u89c9\u5b9e\u73b0\u8d77\u6765\u975e\u5e38\u96be\uff0c\u5176\u5b9e\u5e76\u4e0d\u96be\u3002\u4e0b\u9762\u5c0f\u7f16\u7ed9\u5927\u5bb6\u5206\u4eab\u5b9e\u73b0\u4ee3\u7801 \u5148\u7ed9\u5927\u5bb6\u5c55\u793a\u4e0b\u5b9e\u73b0\u6548\u679c\u56fe\uff1a OK\uff0c\u4e0b\u9762\u6211\u4eec\u6765\u770b\u4e00\u4e0b\u6574\u4e2a\u5c0f\u9879\u76ee\u7684\u4e3b\u4f53\u7ed3\u6784\uff1a \u4e0b\u9762\u662fActivity\u7684\u4ee3\u7801\uff1a package com.way.demo; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; \/** * @author way *\/ public class WeixinChatDemoActivity extends Activity implements OnClickListener { private Button mBtnSend;\/\/ \u53d1\u9001btn private Button mBtnBack;\/\/ \u8fd4\u56debtn private EditText mEditTextContent; private ListView mListView; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-29468","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=29468"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29468\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=29468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=29468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=29468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}