android 微信 listview 气泡
16lz
2021-01-23
tag:android 微信 listview 气泡
WeiXinListViewActivity.java
package org.com.cctest.listview;import java.util.ArrayList;import java.util.Calendar;import java.util.List;import org.com.cctest.R;import org.com.cctest.adapter.WeiXinListViewAdapter;import org.com.cctest.bean.ChatMsgBean;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.WindowManager;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;public class WeiXinListViewActivity extends Activity implements OnClickListener{ /** Called when the activity is first created. */private Button mBtnSend;private EditText mEditTextContent;private ListView mListView;private WeiXinListViewAdapter mAdapter;private List<ChatMsgBean> mDataArrays = new ArrayList<ChatMsgBean>(); public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.weixinlistview); //启动activity时不自动弹出软键盘 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); initView(); initData(); } public void initView() { mListView = (ListView) findViewById(R.id.listview); mBtnSend = (Button) findViewById(R.id.btn_send); mBtnSend.setOnClickListener(this); mEditTextContent = (EditText) findViewById(R.id.et_sendmessage); } private String[]msgArray = new String[]{"你好s!", "你好", "请问您有什么事情?", "关于社保缺口的问题想咨询下", "这个咱们目前是没戏了...", "不能吧?", "...", "擦....",}; private String[]dataArray = new String[]{"2012-09-01 18:00", "2012-09-01 18:10", "2012-09-01 18:11", "2012-09-01 18:20", "2012-09-01 18:30", "2012-09-01 18:35", "2012-09-01 18:40", "2012-09-01 18:50"}; private final static int COUNT = 8; public void initData() { for(int i = 0; i < COUNT; i++) { ChatMsgBean entity = new ChatMsgBean(); entity.setDate(dataArray[i]); if (i % 2 == 0) { entity.setName("客服"); entity.setMsgType(true); }else{ entity.setName("用户"); entity.setMsgType(false); } entity.setText(msgArray[i]); mDataArrays.add(entity); } mAdapter = new WeiXinListViewAdapter(this, mDataArrays);mListView.setAdapter(mAdapter); }@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch(v.getId()){case R.id.btn_send:send();}}private void send(){String contString = mEditTextContent.getText().toString();if (contString.length() > 0){ChatMsgBean entity = new ChatMsgBean();entity.setDate(getDate());entity.setName("人马");entity.setMsgType(false);entity.setText(contString);mDataArrays.add(entity);mAdapter.notifyDataSetChanged();mEditTextContent.setText("");mListView.setSelection(mListView.getCount() - 1);}} private String getDate() { Calendar c = Calendar.getInstance(); String year = String.valueOf(c.get(Calendar.YEAR)); String month = String.valueOf(c.get(Calendar.MONTH)); String day = String.valueOf(c.get(Calendar.DAY_OF_MONTH) + 1); String hour = String.valueOf(c.get(Calendar.HOUR_OF_DAY)); String mins = String.valueOf(c.get(Calendar.MINUTE)); StringBuffer sbBuffer = new StringBuffer(); sbBuffer.append(year + "-" + month + "-" + day + " " + hour + ":" + mins); return sbBuffer.toString(); } public void head_xiaohei(View v) { //标题栏 返回按钮 } }
weixinlistview.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#f0f0f0"> <RelativeLayout android:id="@+id/rl_bottom" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_alignParentBottom="true" android:background="@drawable/top_background" > <Button android:id="@+id/btn_send" android:layout_width="wrap_content" android:layout_height="40dp" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:layout_centerVertical="true" android:text="发送" android:background="@drawable/send_btn" /> <EditText android:id="@+id/et_sendmessage" android:layout_width="fill_parent" android:layout_toLeftOf="@id/btn_send" android:layout_height="40dp" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:background="@drawable/textbg" android:singleLine="true" android:textSize="18sp" android:layout_alignParentLeft="true"/> </RelativeLayout> <ListView android:id="@+id/listview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:divider="@null" android:dividerHeight="5dp" android:cacheColorHint="#0000" android:layout_above="@+id/rl_bottom" /> </RelativeLayout>
WeiXinListViewAdapter.java
package org.com.cctest.adapter;import java.util.List;import org.com.cctest.R;import org.com.cctest.bean.ChatMsgBean;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;/***** * http://blog.csdn.net/zhy_cheng/article/details/8214028 * */public class WeiXinListViewAdapter extends BaseAdapter {public static interface IMsgViewType{int IMVT_COM_MSG = 0;int IMVT_TO_MSG = 1;} private static final String TAG = "WeiXinListViewAdapter"; private List<ChatMsgBean> coll; private Context ctx; private LayoutInflater mInflater; public WeiXinListViewAdapter(Context context, List<ChatMsgBean> coll) { ctx = context; this.coll = coll; mInflater = LayoutInflater.from(context); } public int getCount() { return coll.size(); } public Object getItem(int position) { return coll.get(position); } public long getItemId(int position) { return position; } public int getItemViewType(int position) {// TODO Auto-generated method stubChatMsgBean entity = coll.get(position); if (entity.getMsgType()) { return IMsgViewType.IMVT_COM_MSG; }else{ return IMsgViewType.IMVT_TO_MSG; } }public int getViewTypeCount() {// TODO Auto-generated method stubreturn 2;} public View getView(int position, View convertView, ViewGroup parent) { ChatMsgBean entity = coll.get(position); boolean isComMsg = entity.getMsgType(); ViewHolder viewHolder = null; if (convertView == null) { if (isComMsg) { convertView = mInflater.inflate(R.layout.weixinlistview_left, null); }else{ convertView = mInflater.inflate(R.layout.weixinlistview_right, null); } viewHolder = new ViewHolder(); viewHolder.tvSendTime = (TextView) convertView.findViewById(R.id.tv_sendtime); viewHolder.tvUserName = (TextView) convertView.findViewById(R.id.tv_username); viewHolder.tvContent = (TextView) convertView.findViewById(R.id.tv_chatcontent); viewHolder.isComMsg = isComMsg; convertView.setTag(viewHolder); }else{ viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.tvSendTime.setText(entity.getDate()); viewHolder.tvUserName.setText(entity.getName()); viewHolder.tvContent.setText(entity.getText()); return convertView; } private class ViewHolder { public TextView tvSendTime; public TextView tvUserName; public TextView tvContent; public boolean isComMsg = true; }}
weixinlistview_left.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="6dp"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center_horizontal"> <TextView android:id="@+id/tv_sendtime" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@style/chat_text_date_style"/> </LinearLayout> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:layout_marginLeft="5dp" > <ImageView android:id="@+id/iv_userhead" android:layout_width="52dp" android:layout_height="52dp" android:clickable="true" android:onClick="head_xiaohei" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:background="@drawable/ic_launcher"/> <!-- --> <TextView android:id="@+id/tv_chatcontent" android:layout_toRightOf="@id/iv_userhead" android:layout_marginLeft="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/chatfrom_bg" style="@style/chat_content_date_style"/> <TextView android:id="@+id/tv_username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/iv_userhead" android:layout_alignParentLeft="true" android:layout_toLeftOf="@id/tv_chatcontent" style="@style/chat_text_name_style"/> </RelativeLayout> </LinearLayout>
weixinlistview_right.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="6dp" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center_horizontal"> <TextView android:id="@+id/tv_sendtime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="2dp" android:textColor="#ffffff" android:textSize="12sp" android:background="#bfbfbf"/> </LinearLayout> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:layout_marginRight="5dp" > <ImageView android:id="@+id/iv_userhead" android:layout_width="52dp" android:layout_height="52dp" android:focusable="false" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:background="@drawable/ic_launcher"/> <TextView android:id="@+id/tv_chatcontent" android:layout_toLeftOf="@id/iv_userhead" android:layout_marginRight="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/chatto_bg" android:textSize="15sp" android:textColor="#ff000000" android:gravity="left|center" android:minHeight="50dp" android:lineSpacingExtra="2dp" android:clickable="true" android:focusable="true"/> <TextView android:id="@+id/tv_username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/iv_userhead" android:layout_alignParentRight="true" android:layout_toRightOf="@id/tv_chatcontent" android:textSize="15sp" android:gravity="center" android:textColor="#818181"/> </RelativeLayout></LinearLayout>源代码可以从这里下载:http://download.csdn.net/detail/chen88358323/4823542