android 微信 listview 气泡

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);
		
    }


	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(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 stub
		ChatMsgBean 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 stub
		return 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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值