您的位置:首页 > 移动开发 > Android开发

android listview使用总结

2015-04-28 22:01 323 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: