同一个listview上下展示不同布局,解决两个listview上下显示不全问题
来源:互联网 发布:java怎么做ftp文件同步 编辑:程序博客网 时间:2024/05/15 10:25
最近不知不觉养成了写博客的习惯,有一些好的东西就要跟大家分享,如果碰到了相同的需求,可以节省开发的时间,不过我还是建议别人的东西只是参考的价值,只有自己去理解,如何变成自己的东西才算是进步。
好了废话不多说,我们项目这次实现的东西是两个完全不同的列表(两个列表的数据对象不一样,样式排版不一样)放在一个界面,分为上下的排列方式。遇到这样的情况首先会想到用两个listview上线排列显示。但是你会发现当第一个listview超过一屏幕的话,下面那个将无法显示。网上有一些解决的办法就是把两个listview放入ScrollView中。然后去动态计算listview的高度,或者自定义一个可以自己计算高度的listview。禁止listview的上下滑动,把它的滑动事件交给ScrollView去执行。这也是一个很好的办法。不过我想既然两个有上下之分,也就是有规律可循,所以通过修改Adpter来实现这样的效果。我的demo样式如下图
按照我的思路只是放入一个lsitview。在自定义adpter的时候出入两个list集合。分为上下两个list.关键是在如何去显示问题。直接上代码:
/**
* @author frankLi
*
*/
public class MyAdapter extends BaseAdapter {
private List<DateBen1> listTop = null;private List<DateOther> listBottom = null;private Context mContext;private final int TOP_ITEM = 0, BOTTOM_ITEM = 1, TYPE_COUNT = 2;/** * 头部列表数据的大小 * */private int TopCount = 0;public MyAdapter(Context mContext, List<DateBen1> list, List<DateOther> datasOther) { this.mContext = mContext; this.listTop = list; this.listBottom = datasOther; TopCount = listTop.size();}/** * 设置Item显示的数据集合 * * @param list */public void setTopList(List<DateBen1> list) { this.listTop = list; TopCount = listTop.size();}/** * 设置Item显示的数据集合 * * @param list */public void setBottomList(List<DateOther> list) { this.listBottom = list;}@Overridepublic int getCount() { int count = 0; if (listTop != null && listBottom != null) { count = TopCount + listBottom.size(); } if (listTop != null && listBottom == null) { count = TopCount; } if (listBottom != null && listTop == null) { count = listBottom.size(); } return count;}@Overridepublic Object getItem(int position) { if (position >= 0 && position < TopCount) { return listTop.get(position); } if (position > TopCount) { return listBottom.get(position - TopCount); } if (position <= 1) { return null; } return null;}@Overridepublic long getItemId(int position) { return position;}/** 该方法返回多少个不同的布局 */@Overridepublic int getViewTypeCount() { // TODO Auto-generated method stub return TYPE_COUNT;}/** * 获取当前需要显示布局的类型 * return TOP_ITEM则表示上面半部分列表 * return BOTTOM_ITEM则表示下半部分列表 * **/@Overridepublic int getItemViewType(int position) { if (position < TopCount) return TOP_ITEM; else return BOTTOM_ITEM;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { viewHolder = new ViewHolder(); if (getItemViewType(position) == TOP_ITEM) { convertView = LayoutInflater.from(mContext).inflate( R.layout.list_item_tv1, null); viewHolder.tvName = (TextView) convertView .findViewById(R.id.tv_text_name); viewHolder.tvid = (TextView) convertView .findViewById(R.id.tv_text_clientid); } else { convertView = LayoutInflater.from(mContext).inflate( R.layout.list_item_tv22, null); viewHolder.tvDes = (TextView) convertView .findViewById(R.id.tv_text_des); } convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } if (position < TopCount) { viewHolder.tvName.setText(listTop.get(position).name); viewHolder.tvid.setText(listTop.get(position).id); } else { viewHolder.tvDes.setText(listBottom.get(position - TopCount).des); } return convertView;}final static class ViewHolder { TextView tvName; TextView tvid; TextView tvDes;}}
`
代码里面注释很详细。通过判断listTop的大小。来判断是那种显示样式。然后定义不同的convertView 。接下来就是放入你的数据。不过放入数据的过程一定要注意不要出现数组越界的问题。你得详细打印position.
下面附上我的demo链接
http://download.csdn.net/detail/u014007519/9456132
- 同一个listview上下展示不同布局,解决两个listview上下显示不全问题
- 两个listview(RecyclerView)联动上下展示不全问题解析
- listview上下不同数据显示
- Android 一个页面上下两个ListView的页面显示
- 【Android】解决Listview侧滑与上下滑动问题+侧滑通用布局 DragRelativeLayout
- 解决ScrollView嵌套ListView显示不全问题
- 解决ScrollView嵌套ListView显示不全问题
- 解决ListView显示不全、滑动冲突问题
- listview显示不全问题
- 解决ScrollView嵌套ListView或ListView嵌套ListView,listview显示不全的问题
- ListView显示不同布局
- ListView 显示不同布局
- 详解嵌套ListView、ScrollView布局显示不全的问题
- 详解嵌套ListView、ScrollView布局显示不全的问题
- 详解嵌套ListView、ScrollView布局显示不全的问题
- 详解嵌套ListView、ScrollView布局显示不全的问题
- [详解嵌套ListView、ScrollView布局显示不全的问题]
- 详解嵌套ListView、ScrollView布局显示不全的问题
- 不同级别用户Session覆盖
- Oracle的缓冲区命令
- Linux下的tar压缩解压缩命令详解
- 设计模式:外观模式
- 做出漂亮的网页表格(CSS代替bordercolorlight与bordercolordark)
- 同一个listview上下展示不同布局,解决两个listview上下显示不全问题
- 企业如何利用软文推广做到风生水起的
- java中字符串/java对象<-->JSON对象互转
- 基于ZigBee和STM32的智能家居控制系统的设计与实现
- Android设备间实现蓝牙共享上网
- Linux文件特殊权限
- iOS Auto Layout 中的对齐选项
- 4.8.8 安卓开发笔记——自定义广告轮播Banner(无限循环实现)
- 【代码笔记】iOS-给背景图赋值颜色