android listview使用总结

1.设置高度

2. 设置背景,取消下划线

3.获取当前点击的是listview的第几个子item




1.设置高度

layout_height 是无效的,要使用layout_minheight,就是最小高度


2. 设置背景,取消下划线

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/namelist"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="#00000000"
    android:listSelector="@android:color/transparent" />

3.获取当前点击的是listview的第几个子item(我的理解)

首先要知道listview的所有子item都是他的子view,

子view是屏幕能够显示的view的个数,包括显示了一半的

然后看看listview的几个方法

myListView.getFirstVisiblePosition();//显示的第一个子view的position,比如显示的是第5个item在最上方的位置(0~n)
myListView.getId();                           //应该是listview的id
myListView.getItemIdAtPosition(position); //返回的就是adapter.getItemId(position),也就是position
myListView.getChildCount();              //显示的子view的个数,包括显示了一半的
myListView.getCount();                  //所有需要显示的view的个数


比如,点击66666



比如,点击777777777777




比如,点击888888888



如果移动下位置,6666的上方显示5555的一小部分,那么子view会变成4个

例如,我点击最上方空白位置



上面的都明白后我们就可以使用position - myListView.getFirstVisiblePosition() 来获得点击的是哪一个子view了(从0开始数)

实际上,如果是自定义listview,他有个方法可以在onInterceptTouchEvent方法的down中调用

this.pointToPosition(x,y);  , 他需要一个坐标来确定,返回position,可以用上面的减法获得当前的子view是哪一个

为什么不再onTouchEvent中调用呢,因为,listview的dispatchTouchEvent分发事件的时候,事件被子item的view处理了,所以自己就不会再次处理。






结束2015-6-3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值