利用listview实现简要的QQ聊天效果
2016-04-21 15:42
162 查看
1 先放出消息实体类,注意包含头像,内容,和类别(是接受的消息,还是发送的消息)
然后就是adapter的自定义
3 xml item布局文件
chat_item_out.xml
chat_item_in
4调用界面
/** * 作者:水东流 * 时间: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)); } }
相关文章推荐
- MAT 格式操作
- JAVA基础知识点(自己总结的)
- Hive 优化
- img元素底部有空白间距的问题
- python 切片
- Java 实现导出excel表 POI
- gitlab 配置邮箱
- 2016阿里算法工程师笔试题 (二)
- 怎么在ZBrush中渲染漫画风格的插画
- 在CentOS系统上从零开始搭建WordPress博客的全流程记录
- 大数据面试部分摘要
- 100条经典C语言笔试题目(上)
- Android Volly源码分析之执行线程
- Spring mvc提交form包含date类型数据错误400问题。
- Nginx 下配置SSL证书的方法
- iOS屏幕旋转
- iOS图片放大的方式(transform和frame)
- id、静态类型、自省-iOS初学
- BZOJ 2337|HNOI 2011|XOR和路径|概率期望|高斯消元
- BNUOJ 4057 魔方系列——最小装箱【细节题】