Android编程实战——仿微信群聊-5——Android端UI-多种显示的ListView
来源:互联网 发布:java sessionscoped 编辑:程序博客网 时间:2024/04/27 18:27
Android编程实战——仿微信群聊-5——Android端UI-多种显示的ListView
项目源代码移步github
Android端的界面应该不难,有一个难点就是对话的显示,这需要一个显示多种内容的ListView,这里就要用到BaseAdapter了。BaseAdapter是一个抽象类,我们需要自己实现它的内容,所以BaseAdapter的自由度会很高。
MyAdapter:
public class MyAdapter extends BaseAdapter { private Context context; private LayoutInflater layoutInflater; private final int VIEW_TYPE =3 ; //显示的3种方式 private final int TYPE_1 = 0; private final int TYPE_2 = 1; private final int TYPE_3 = 2; public MyAdapter(Context context) { this.context = context; layoutInflater = LayoutInflater.from(context); } @Override public int getItemViewType(int position) { return type.get(position); } @Override public int getViewTypeCount() { return VIEW_TYPE; } @Override public int getCount() { return name.size(); } @Override public Object getItem(int position) { return name.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { int type = getItemViewType(position); String userName; if (convertView == null) { switch (type) { case TYPE_1: convertView = layoutInflater.inflate(R.layout.list_layout_text, parent, false); userName = name.get(position); LinearLayout llColorBlock = (LinearLayout) convertView.findViewById(R.id.llColorBlock); TextView tvUserName1 = (TextView) convertView.findViewById(R.id.tvUserName); TextView tvText = (TextView) convertView.findViewById(R.id.tvText); tvUserName1.setText( userName + ":"); tvText.setText(text.get(position)); if (userName.equals(user.getUserName())) { llColorBlock.setBackgroundColor(getResources().getColor(R.color.green)); } break; case TYPE_2: convertView = layoutInflater.inflate(R.layout.list_layout_voice,parent,false); userName = name.get(position); TextView tvUserName2 = (TextView) convertView.findViewById(R.id.tvUserName); TextView tvTime = (TextView) convertView.findViewById(R.id.tvTime); tvUserName2.setText(name.get(position) + ":"); tvTime.setText(String.valueOf(Math.round(time.get(position))) + " ''"); Button btVoice = (Button) convertView.findViewById(R.id.btVoice); if (userName.equals(user.getUserName())) { tvTime.setTextColor(getResources().getColor(R.color.green)); } btVoice.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (audioPresenter.isPlaying()) { audioPresenter.stopPlay(); }else { System.out.println("file" + filePath.get(position)); audioPresenter.palyAudio(filePath.get(position)); } } }); break; case TYPE_3: convertView = layoutInflater.inflate(R.layout.list_layout_server,parent,false); TextView tvServer = (TextView) convertView.findViewById(R.id.tvServer); tvServer.setText(text.get(position)); break; } } return convertView; } }
里面最重要的方法就是getView了,View在这个方法里面绘制并返回,根据类型来使用相应的布局显示数据,并且可以初始化数据,设置事件监听器。这里3种显示的布局分别为,文本消息,语音消息,服务器消息。是3种不同的显示。
0 0
- Android编程实战——仿微信群聊-5——Android端UI-多种显示的ListView
- Android—自定义Adapter实现多种Item视图的ListView
- Android ListView 显示多种数据类型
- android UI——分组+悬停 listview
- Android高级UI控件—ListView
- [android ui]ListView有多种Item View的优化
- Android学习 —— 多种适配器方式实现ListView
- Android UI编程(5)——Looper
- Android UI编程之自定义控件——可高亮显示的TextView
- android listView的item 显示多种不同的布局
- Android进阶——构建UI布局的多种方式总结
- 在Android的Listview中显示多种视图
- 在Android的Listview中显示多种视图
- Android的Listview中显示多种视图 如何优化
- 在Android的Listview中显示多种视图
- 在Android的Listview中显示多种视图
- Android一点 ListView显示多种布局
- 【Android】ListView--显示多种类型内容
- 一维数组巩固,二维数组的学习
- 【HDU】5746 Memento Mori【双指针】
- PullRefresh(自定义控件,ListView,下拉刷新,加载更多)
- 添加HTTPS验证
- 声学模型学习笔记(四) dnn speedup
- Android编程实战——仿微信群聊-5——Android端UI-多种显示的ListView
- 用UFT录制飞机订票系统
- linux中组的操作命令及说明
- jQuery常用选择器
- redis 高可用解决方案
- AD中在原理图·中选中PCB器件
- 第七周项目3-负数把正数赶出队列
- 爬虫评估记录
- js实现对象深度拷贝