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>
相关推荐
// 显示聊天界面 break; case R.id.action_discover: // 显示发现界面 break; ... default: return false; } return true; } }); ``` 4. **切换内容区域**:根据用户选择的Tab,动态更换或隐藏相应的...
`RecyclerView`是Android SDK中的一个高效视图适配器,用于展示大量数据集,通常用于列表或者网格布局,非常适合构建聊天界面这种需要滚动查看多条消息的场景。 首先,我们要理解`RecyclerView`的工作原理。`...
在本文中,我们将深入探讨如何构建一个简单的Android聊天室应用,以及它与PC服务器端和客户端的交互。这个"Android简易版聊天室"项目旨在提供一个基础架构,用于理解多平台间实时通信的工作原理。 首先,我们要理解...
综上所述,实现一个精美的Android聊天界面涉及自定义Adapter、布局设计、数据模型、性能优化等多个方面。通过不断学习和实践,我们可以打造出用户体验极佳的聊天应用。在实际开发中,可以根据具体需求进行调整和扩展...
在Android平台上,构建一个类似微信的聊天界面是一个常见的需求,涉及到多个关键技术点。这个项目,"HRChatDemo",显然就是一个实现这一目标的示例应用。让我们深入探讨一下其中涉及的关键技术及其细节。 首先,...
在聊天界面,用户可以输入消息并发送。消息的发送可以通过`BluetoothService`的`send()`方法,将消息写入`OutputStream`。同时,我们需要在一个后台线程中不断读取`InputStream`,接收到的消息通过`Handler`更新到...
知识点4:聊天界面布局 聊天界面的布局通常使用 RelativeLayout 或 LinearLayout,将输入框、发送按钮和聊天记录列表组合在一起。在本例中,我们使用 RelativeLayout 作为根布局,将 RecyclerView 和 EditText 等...
全书分为三篇共18章,第一篇以简单易懂的实例为依托,详细介绍了Android平台的基本控件、高级控件、常用界面布局及菜单对话框等相关知识;第二篇介绍了Android平台的高级知识,包括消息与广播服务、网络数据处理、...
在Android应用开发中,创建一个类似QQ聊天界面的效果是一个常见的需求。这涉及到用户界面(UI)设计和数据展示的技巧。本教程将重点介绍如何利用RecyclerView来实现这一目标。RecyclerView是Android SDK提供的一种高效...
在Android开发领域,构建类似微信主界面的应用是一个常见的需求,这涉及到用户界面设计、导航以及交互体验等多个方面。本文将详细讲解如何使用Android Studio来实现这一目标,主要聚焦于ViewPager和Fragment的结合...
在这个实例中,我们可能看到了不同的布局文件,如用于显示人员列表的`list_view.xml`,聊天界面的`chat_activity.xml`等,它们通过`RecyclerView`或`ListView`展示数据,并结合`Adapter`进行数据绑定。 2. **人员...
在Android开发中,仿QQ界面是一项常见的练习,它可以帮助开发者深入理解Android UI设计和交互实现。这个实例旨在教你如何创建一个类似QQ的应用程序界面,包括登录界面、主界面以及一些基本的功能实现。以下将详细...
在Android开发中,创建一个泡泡聊天界面是一项常见的任务,尤其在设计即时通讯应用时。泡泡聊天界面因其直观、友好的用户交互体验而被广泛应用。...但这个实例已经足够帮助初学者理解Android聊天界面的基本构建过程。
Android应用源码45套安卓源码合集: android中文离线发音引擎FOCTTS使用源码.rar Android应用源码(精)LBS签到应用源码.rar Android应用源码(精)xUtils2.2.5.rar ...Android应用源码飞碟说欢迎界面.rar
QQ设置界面布局的实现 腾讯微博下拉刷新listview 腾讯登录注册界面的实现 微信TAB界面的实现 自定义单选多选对话框的实现 微信聊天气泡界面的实现 自定义spinner下拉框实现的实现 高仿新浪新闻SlidingMenu color表 ...
在Android平台上,实现“聊天按住说话”功能是常见的交互方式,尤其在即时通讯应用中。这个功能允许用户通过长按按钮来录制语音,松开按钮时停止录制,并自动发送语音消息。以下将详细介绍实现这一功能所涉及的核心...
在Android开发中,创建一个能够显示人员列表、支持聊天功能(包括发送图片和语音)的应用是常见的需求。...通过实践这个实例,你不仅可以学习到如何构建一个完整的聊天应用,还能对Android的各个层面有更深入的理解。
在Android应用开发中,创建一个用户友好的聊天界面是至关重要的。`RecyclerView`是一个高效的视图复用组件,常用于处理大量数据的列表显示,如聊天记录。本篇文章将详细介绍如何利用`RecyclerView`来实现一个简单的...
3. **悬浮窗布局**:悬浮窗的UI界面可以通过XML布局文件设计,或者在代码中动态创建。布局可以包含按钮、文本、图片等各种元素,以实现所需的功能。 4. **事件处理**:为了响应用户的点击或触摸事件,你需要在悬浮...