利用listview实现简要的QQ聊天效果
来源:互联网 发布:js隐藏span 编辑:程序博客网 时间:2024/05/21 19:34
1 先放出消息实体类,注意包含头像,内容,和类别(是接受的消息,还是发送的消息)
/** * 作者:水东流 * 时间:2016/4/21 */public class ChatBean { private int type; private String text; private Bitmap icon; public int getType() { return type; } public void setType(int type) { this.type = type; } public String getText() { return text; } public void setText(String text) { this.text = text; } public Bitmap getIcon() { return icon; } public void setIcon(Bitmap icon) { this.icon = icon; }}
然后就是adapter的自定义
/** * 作者:水东流 * 时间:2016/4/21 * qq聊天 */public class MyAdapter extends BaseAdapter { private List<ChatBean> mData; private LayoutInflater mInflater; public MyAdapter(List<ChatBean> mData, Context context) { this.mData = mData; mInflater = LayoutInflater.from(context); } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } /*获取第position个item的类型*/ @Override public int getItemViewType(int position) { return mData.get(position).getType(); } /*设定有几种item*/ @Override public int getViewTypeCount() { return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { if (getItemViewType(position) == 0) { viewHolder = new ViewHolder(); convertView = mInflater.inflate(R.layout.chat_item_in, null); viewHolder.icon = (ImageView) convertView.findViewById(R.id.icon_in); viewHolder.text = (TextView) convertView.findViewById(R.id.text_in); } else { viewHolder = new ViewHolder(); convertView = mInflater.inflate(R.layout.chat_item_out, null); viewHolder.icon = (ImageView) convertView.findViewById(R.id.icon_out); viewHolder.text = (TextView) convertView.findViewById(R.id.text_out); } convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.icon.setImageBitmap(mData.get(position).getIcon()); viewHolder.text.setText(mData.get(position).getText()); return convertView; } public final class ViewHolder { public ImageView icon; public TextView text; }}
3 xml item布局文件
chat_item_out.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:gravity="center_vertical|right" android:padding="10dp" android:orientation="horizontal" android:layout_height="match_parent"> <TextView android:id="@+id/text_out" android:layout_width="wrap_content" android:text="土豆什么事" android:gravity="center" android:textSize="20sp" android:layout_height="wrap_content" /> <ImageView android:id="@+id/icon_out" android:src="@mipmap/ic_launcher" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>chat_item_in
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:gravity="center_vertical" android:padding="10dp" android:orientation="horizontal" android:layout_height="match_parent"><ImageView android:id="@+id/icon_in" android:src="@mipmap/ic_launcher" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/text_in" android:layout_width="wrap_content" android:text="丽丽你好啊" android:gravity="center" android:textSize="20sp" android:layout_height="wrap_content" /></LinearLayout>
4调用界面
public class QQActivity extends AppCompatActivity { ListView listView; List<ChatBean> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_qq); listView = (ListView) findViewById(R.id.listview); init(); } private void init() { list = new ArrayList<>(); ChatBean cb1 = new ChatBean(); cb1.setIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); cb1.setText("丽丽我喜欢你"); cb1.setType(0); ChatBean cb2 = new ChatBean(); cb2.setIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); cb2.setText("土豆泥好烦啊"); cb2.setType(1); ChatBean cb3 = new ChatBean(); cb3.setIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); cb3.setText("丽丽我真的喜欢你"); cb3.setType(0); ChatBean cb4 = new ChatBean(); cb4.setIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); cb4.setText("那好吧,你想干什么"); cb4.setType(1); ChatBean cb5 = new ChatBean(); cb5.setIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); cb5.setText("我想和你去看日出"); cb5.setType(0); ChatBean cb6 = new ChatBean(); cb6.setIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); cb6.setText("好不好"); cb6.setType(0); for(int i=0;i<1000;i++){ list.add(cb1); list.add(cb2); list.add(cb3); list.add(cb4); list.add(cb5); list.add(cb6); list.add(cb1); list.add(cb2); list.add(cb3); list.add(cb4); list.add(cb5); list.add(cb6); } listView.setAdapter(new MyAdapter(list, this)); }}
0 0
- 利用listview实现简要的QQ聊天效果
- 实现QQ聊天气泡效果
- JavaScript实现的类似腾讯QQ聊天窗口抖动效果
- 实现和QQ退出聊天对话框的动画效果
- QQ聊天界面——QQ气泡效果与ListView
- QQ聊天界面——QQ气泡效果与ListView
- Delphi中利用钩子实现QQ聊天窗口的修改
- Delphi中利用钩子实现QQ聊天窗口的修改
- 自定义listview 实现仿qq聊天列表左滑删除效果
- listview简单实现QQ聊天栏侧滑
- 利用ListView的基本方法实现效果
- 【HTML5】实现QQ聊天气泡效果
- 使用css实现QQ聊天气泡效果
- 【HTML5】简单实现QQ聊天气泡效果
- QQ聊天气泡拖动效果实现
- 类似QQ的聊天气泡效果
- Qt+html+JavaScript实现类似QQ聊天界面的气泡效果
- Java Swing实现的仿QQ气泡消息聊天窗口效果
- 递推求阶乘
- maven管理本地jar包
- lightoj 1016 - Brush (II) 【贪心】
- BZOJ 2337|HNOI 2011|XOR和路径|概率期望|高斯消元
- QDockWidget嵌套布局详解-实现Visual Studio布局
- 利用listview实现简要的QQ聊天效果
- id、静态类型、自省-iOS初学
- C#界面设计之菜单栏的使用
- iOS屏幕旋转
- Could not read symbols解决方法
- maven
- Android Volly源码分析之执行线程
- 经典算法——堆排序笔试题
- Bootstrap弹出窗示例