`

Android聊天界面布局实例

 
阅读更多

ChatMsgViewAdapter.java:

 

package com.weijie.user.adapter;


import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.weijie.user.R;
import com.weijie.user.model.ChatMsgEntity;

public class ChatMsgViewAdapter extends BaseAdapter {

	public static interface IMsgViewType {
		int IMVT_COM_MSG = 0;
		int IMVT_TO_MSG = 1;
	}

	private static final String TAG = ChatMsgViewAdapter.class.getSimpleName();

	private List<ChatMsgEntity> coll;

	private Context ctx;

	private LayoutInflater mInflater;

	public ChatMsgViewAdapter(Context context, List<ChatMsgEntity> 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
		ChatMsgEntity 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) {

		final ChatMsgEntity entity = coll.get(position);
		boolean isComMsg = entity.getMsgType();

		ViewHolder viewHolder = null;
		if (convertView == null) {
			if (isComMsg) {
				convertView = mInflater.inflate(
						R.layout.chatting_item_msg_text_left, null);
			} else {
				convertView = mInflater.inflate(
						R.layout.chatting_item_msg_text_right, null);
			}

			viewHolder = new ViewHolder();
			viewHolder.tvSendTime = (TextView) convertView
					.findViewById(R.id.tv_sendtime);
			viewHolder.tvContent = (TextView) convertView
					.findViewById(R.id.tv_chatcontent);
			viewHolder.tvTitle = (TextView) convertView
					.findViewById(R.id.show_title);
			viewHolder.isComMsg = isComMsg;

			convertView.setTag(viewHolder);
		} else {
			viewHolder = (ViewHolder) convertView.getTag();
		}

		viewHolder.tvSendTime.setText(entity.getDate());
		
		viewHolder.tvContent.setText(entity.getText());
		
		viewHolder.tvTitle.setText(entity.getTitle());
		viewHolder.tvContent.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
		
		return convertView;
	}

	static class ViewHolder {
		public TextView tvSendTime;
		public TextView tvUserName;
		public TextView tvContent;
		public TextView tvTime;
		public TextView tvTitle;
		public boolean isComMsg = true;
	}

}

 

 

 

 

 

AfterSalesDetailActivity.java:

 

package com.weijie.user.activity;


import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.widget.ListView;

import com.weijie.user.R;
import com.weijie.user.adapter.ChatMsgViewAdapter;
import com.weijie.user.model.ChatMsgEntity;

/**  
 * @ClassName: AfterSalesDetailActivity  
 * @Description: 售后详情  
 * @author chenzheng
 * @date 2014-5-9 上午10:49:33  
 */
public class AfterSalesDetailActivity extends BaseActivity {

	private ListView mListView;
	private ChatMsgViewAdapter mAdapter;
	private List<ChatMsgEntity> mDataArrays = new ArrayList<ChatMsgEntity>();

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.after_sales_detail); // 默认布局管理器

		initView();

		initData();
	}
	
	public void initView() {
		mListView = (ListView) findViewById(R.id.listview);
	}

	private String[] titleArray = new String[] { "创建了投诉","卖家不同意退货申请"};
	private String[] msgArray = new String[] { "订单号:456892110052345 商品名称:红玫瑰花束 投诉类型:商品质量问题",
			"亲,把商品出问题的地方拍下来,发给我,我这边验证一下啊"};

	private String[] dataArray = new String[] { "2012-10-31 18:00",
			"2012-10-31 18:10"};
	private int COUNT = titleArray.length;

	public void initData() {
		for (int i = 0; i < COUNT; i++) {
			ChatMsgEntity entity = new ChatMsgEntity();
			entity.setDate(dataArray[i]);
			if (i % 2 == 0) {
				entity.setMsgType(true);
			} else {
				entity.setMsgType(false);
			}
			entity.setTitle(titleArray[i]);
			entity.setText(msgArray[i]);
			mDataArrays.add(entity);
		}

		mAdapter = new ChatMsgViewAdapter(this, mDataArrays);
		mListView.setAdapter(mAdapter);

	}
	
}

 

 

 

 

 

ChatMsgEntity.java:

 

package com.weijie.user.model;


/**  
 * @ClassName: ChatMsgEntity  
 * @Description: 聊天信息类
 * @author chenzheng
 * @date 2014-4-23 上午9:21:15  
 */
public class ChatMsgEntity {
    private static final String TAG = ChatMsgEntity.class.getSimpleName();

    private String name;

    private String date;

    private String text;
    
    private String time;
    private String title;
    
    

    public String getTime() {
		return time;
	}

	public void setTime(String time) {
		this.time = time;
	}

	private boolean isComMeg = true;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public boolean getMsgType() {
        return isComMeg;
    }

    public void setMsgType(boolean isComMsg) {
    	isComMeg = isComMsg;
    }

    public ChatMsgEntity() {
    }

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

    

}

 

 

 

 

 

after_sales_detail.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:background="@color/white" >

    <!-- 标题栏 -->

    <RelativeLayout
        android:id="@+id/rl_layout"
        android:layout_width="fill_parent"
        android:layout_alignParentTop="true"
        android:layout_height="48dp"
        android:background="@color/color_header"
        android:orientation="horizontal" >

        <!-- 返回按钮 -->

        <LinearLayout
            android:id="@+id/header_back"
            android:layout_width="@dimen/width_go_back"
            android:layout_height="fill_parent"
            android:gravity="center"
            android:orientation="vertical" >

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/go_back" />
        </LinearLayout>
        <!-- 售后详情 -->

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@id/header_back"
            android:text="售后详情"
            android:textColor="@color/white"
            android:textSize="@dimen/xl_size" />
    </RelativeLayout>

    <!-- 聊天内容 listview-->
    <ListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/rl_layout"
        android:cacheColorHint="#0000"
        android:divider="@null"
        android:dividerHeight="20dp"
        android:scrollbarStyle="outsideOverlay"
        android:stackFromBottom="true" />
</RelativeLayout>

 

 

 

 

 

chatting_item_msg_text_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:gravity="center_horizontal"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tv_sendtime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/textview_style_sendtime"
            android:textColor="#999999"
            android:textSize="14sp" />
    </LinearLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="5dp" >

        <ImageView
            android:id="@+id/iv_userhead"
            android:layout_width="52dp"
            android:layout_height="52dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:background="@drawable/myhead"
            android:clickable="true" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_toRightOf="@id/iv_userhead"
            android:background="@drawable/msg_left_bg"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/show_title"
                android:layout_width="wrap_content"
                android:textColor="#666666"
                android:textSize="17sp"
                android:layout_height="wrap_content" />

            <View
                android:id="@+id/separate_line"
                android:layout_width="fill_parent"
                android:layout_height="2dip"
                android:background="#666666" />

            <TextView
                android:id="@+id/tv_chatcontent"
                android:layout_width="wrap_content"
                android:textColor="#666666"
                android:textSize="15sp"
                android:layout_height="wrap_content" />
        </LinearLayout>
        
    </RelativeLayout>

</LinearLayout>

 

 

 

 

 

chatting_item_msg_text_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:gravity="center_horizontal"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tv_sendtime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/textview_style_sendtime"
            android:textColor="#999999"
            android:textSize="14sp" />
    </LinearLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="5dp" >

        <ImageView
            android:id="@+id/iv_userhead"
            android:layout_width="52dp"
            android:layout_height="52dp"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:background="@drawable/goods_img"
            android:focusable="false" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:layout_toLeftOf="@id/iv_userhead"
            android:background="@drawable/msg_right_bg"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/show_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/white"
                android:textSize="17sp" />

            <View
                android:id="@+id/separate_line"
                android:layout_width="fill_parent"
                android:layout_height="2dip"
                android:background="@color/white" />

            <TextView
                android:id="@+id/tv_chatcontent"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/white"
                android:textSize="15sp" />
        </LinearLayout>
    </RelativeLayout>

</LinearLayout>

 

 

 

 

 

textview_style_sendtime.xml:

 

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <solid android:color="#EDEDED" />
	
    <padding
        android:bottom="4dp"
        android:top="4dp" 
        android:left="6dp"
        android:right="6dp"/>

     <corners android:radius="5dp" /> 
</shape>

 

 

 

 

  • 大小: 34.3 KB
分享到:
评论

相关推荐

    android布局实例微信界面Tab模仿

    // 显示聊天界面 break; case R.id.action_discover: // 显示发现界面 break; ... default: return false; } return true; } }); ``` 4. **切换内容区域**:根据用户选择的Tab,动态更换或隐藏相应的...

    Android之简单的聊天界面--源代码

    `RecyclerView`是Android SDK中的一个高效视图适配器,用于展示大量数据集,通常用于列表或者网格布局,非常适合构建聊天界面这种需要滚动查看多条消息的场景。 首先,我们要理解`RecyclerView`的工作原理。`...

    Android简易版聊天室

    在本文中,我们将深入探讨如何构建一个简单的Android聊天室应用,以及它与PC服务器端和客户端的交互。这个"Android简易版聊天室"项目旨在提供一个基础架构,用于理解多平台间实时通信的工作原理。 首先,我们要理解...

    android listview聊天界面实现

    综上所述,实现一个精美的Android聊天界面涉及自定义Adapter、布局设计、数据模型、性能优化等多个方面。通过不断学习和实践,我们可以打造出用户体验极佳的聊天应用。在实际开发中,可以根据具体需求进行调整和扩展...

    android高仿微信聊天界面,语音,表情,拍照及本地图片选择功能

    在Android平台上,构建一个类似微信的聊天界面是一个常见的需求,涉及到多个关键技术点。这个项目,"HRChatDemo",显然就是一个实现这一目标的示例应用。让我们深入探讨一下其中涉及的关键技术及其细节。 首先,...

    android blue tooth 聊天实例

    在聊天界面,用户可以输入消息并发送。消息的发送可以通过`BluetoothService`的`send()`方法,将消息写入`OutputStream`。同时,我们需要在一个后台线程中不断读取`InputStream`,接收到的消息通过`Handler`更新到...

    android recyclerview模拟聊天界面

    知识点4:聊天界面布局 聊天界面的布局通常使用 RelativeLayout 或 LinearLayout,将输入框、发送按钮和聊天记录列表组合在一起。在本例中,我们使用 RelativeLayout 作为根布局,将 RecyclerView 和 EditText 等...

    Android核心技术与实例详解源码

    全书分为三篇共18章,第一篇以简单易懂的实例为依托,详细介绍了Android平台的基本控件、高级控件、常用界面布局及菜单对话框等相关知识;第二篇介绍了Android平台的高级知识,包括消息与广播服务、网络数据处理、...

    利用RecyclerView实现QQ聊天界面效果

    在Android应用开发中,创建一个类似QQ聊天界面的效果是一个常见的需求。这涉及到用户界面(UI)设计和数据展示的技巧。本教程将重点介绍如何利用RecyclerView来实现这一目标。RecyclerView是Android SDK提供的一种高效...

    android studio仿微信主界面

    在Android开发领域,构建类似微信主界面的应用是一个常见的需求,这涉及到用户界面设计、导航以及交互体验等多个方面。本文将详细讲解如何使用Android Studio来实现这一目标,主要聚焦于ViewPager和Fragment的结合...

    [Android实例] 【版主帖推荐】继人员列表,聊天的实现,包括图片,语音.zip

    在这个实例中,我们可能看到了不同的布局文件,如用于显示人员列表的`list_view.xml`,聊天界面的`chat_activity.xml`等,它们通过`RecyclerView`或`ListView`展示数据,并结合`Adapter`进行数据绑定。 2. **人员...

    Android应用小实例--仿QQ界面

    在Android开发中,仿QQ界面是一项常见的练习,它可以帮助开发者深入理解Android UI设计和交互实现。这个实例旨在教你如何创建一个类似QQ的应用程序界面,包括登录界面、主界面以及一些基本的功能实现。以下将详细...

    Android编程实现泡泡聊天界面实例详解(附源码)

    在Android开发中,创建一个泡泡聊天界面是一项常见的任务,尤其在设计即时通讯应用时。泡泡聊天界面因其直观、友好的用户交互体验而被广泛应用。...但这个实例已经足够帮助初学者理解Android聊天界面的基本构建过程。

    Android应用源码45套安卓源码合集.zip

    Android应用源码45套安卓源码合集: android中文离线发音引擎FOCTTS使用源码.rar Android应用源码(精)LBS签到应用源码.rar Android应用源码(精)xUtils2.2.5.rar ...Android应用源码飞碟说欢迎界面.rar

    android实例代码+文档

    QQ设置界面布局的实现 腾讯微博下拉刷新listview 腾讯登录注册界面的实现 微信TAB界面的实现 自定义单选多选对话框的实现 微信聊天气泡界面的实现 自定义spinner下拉框实现的实现 高仿新浪新闻SlidingMenu color表 ...

    Android聊天按住说话功能

    在Android平台上,实现“聊天按住说话”功能是常见的交互方式,尤其在即时通讯应用中。这个功能允许用户通过长按按钮来录制语音,松开按钮时停止录制,并自动发送语音消息。以下将详细介绍实现这一功能所涉及的核心...

    Android实例之[Android实例] 继人员列表,聊天的实现,包括图片,语音

    在Android开发中,创建一个能够显示人员列表、支持聊天功能(包括发送图片和语音)的应用是常见的需求。...通过实践这个实例,你不仅可以学习到如何构建一个完整的聊天应用,还能对Android的各个层面有更深入的理解。

    简单的聊天界面设计和实现

    在Android应用开发中,创建一个用户友好的聊天界面是至关重要的。`RecyclerView`是一个高效的视图复用组件,常用于处理大量数据的列表显示,如聊天记录。本篇文章将详细介绍如何利用`RecyclerView`来实现一个简单的...

    Android项目悬浮窗实例

    3. **悬浮窗布局**:悬浮窗的UI界面可以通过XML布局文件设计,或者在代码中动态创建。布局可以包含按钮、文本、图片等各种元素,以实现所需的功能。 4. **事件处理**:为了响应用户的点击或触摸事件,你需要在悬浮...

Global site tag (gtag.js) - Google Analytics