ListView

原文链接:http://gekie.iteye.com/blog/1257355


要实现类似IMBd类似的布局。
[img]http://dl.iteye.com/upload/attachment/0068/8134/f51efe9d-c44e-395f-8b55-1000ab5c4821.png[/img][img]http://dl.iteye.com/upload/attachment/0068/8136/98c000ea-9ae9-3772-a08c-a3fc16f4e6a3.png[/img]
可以看出它的列表上方的图片展示区和下面列表条目是一体的,在上下滚动的时候。而图片展示区不是列表条目。
当然可以分别实现,图片展示区用Gallery,下面用ListView,但是如果横屏,则ListView部分的高度将很短,不方便上下滚动选择。也可以强制竖屏,不过这样用户体验会变差。
其实ListView提供了Header,IMBd实现的图片展示区就是自定义的ListView Header。
写个简单的例子说明这个事情。先写个最简单的。
[img]http://dl.iteye.com/upload/attachment/0068/8162/35b08793-1d1b-396a-a3ae-6b07e81149e0.png[/img]
这里的header就是一个TextView生成的ListView Header部分。在布局的Listview部分:
在代码中在ListView中加入Header:

listView = (ListView) this.findViewById(R.id.list);
TextView textView = new TextView(this);
textView.setText("header");
listView.addHeaderView(textView);

Header部分是可以添加多个的,比如:
[img]http://dl.iteye.com/upload/attachment/0068/8164/1e86f215-007a-3bf8-9c10-bea08754de22.png[/img]
对Header再做进一步定制。见效果:
[img]http://dl.iteye.com/upload/attachment/0068/8182/0520edbb-4639-3b08-bd7a-bb8cb48642e7.png[/img]
这里的Header部分使用了自定义视图。

首先要增加一个小房子的图:
[img]http://dl.iteye.com/upload/attachment/0068/8170/c997d8bb-e124-36da-b88f-7fbbfc15abcd.png[/img]
然后,创建一个针对Header的layout:
[img]http://dl.iteye.com/upload/attachment/0068/8172/0aecc8e1-ba2e-3402-8f24-0aa9a65a4c00.png[/img]
该文件内容:

然后在代码中通过inflate的方式把layout加入到header。
listView.addHeaderView(LayoutInflater.from(this).inflate(
R.layout.table_title, null));



=========================================================================================
getView 的时候最好利用好convertView 效率会提高不少。
public View getView(int position, View convertView, ViewGroup parent) {  
ViewHolder holder = null;
if (convertView == null) {
holder=new ViewHolder();
convertView = mInflater.inflate(R.layout.vlist2, null);
holder.img = (ImageView)convertView.findViewById(R.id.img);
holder.title = (TextView)convertView.findViewById(R.id.title);
holder.info = (TextView)convertView.findViewById(R.id.info);
holder.viewBtn = (Button)convertView.findViewById(R.id.view_btn);
convertView.setTag(holder);
}else {
holder = (ViewHolder)convertView.getTag();
}
holder.img.setBackgroundResource((Integer)mData.get(position).get("img"));
holder.title.setText((String)mData.get(position).get("title"));
holder.info.setText((String)mData.get(position).get("info"));
return convertView;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值