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


更多相关文章

  1. Asp.net Mvc表单验证气泡提示效果展示
  2. 动态气泡图,拿走不谢!
  3. php快速实现联系客服(在线咨询)
  4. 新零售智能化升级:RPA+AI塑造客服数字化新优势

随机推荐

  1. Android字符串进阶:字体属性及测量(FontMet
  2. ANDROID音频系统散记之五:如何绕开多媒体
  3. 10个常见的 Android(安卓)新手误区
  4. Android二维码扫描之ZXing快速项目集成
  5. Android:简易计算器
  6. Android中什么是anr ? 原因 or 解决方法
  7. JavaEye Android(安卓)客户端正式发布
  8. android进程间服务通信示例
  9. Android(安卓)Intent调用方法总结
  10. android 事件分发机制(图文详解)