ListView中getChildAt(index)的使用注意事项

Android中getChildAt()方法介绍 getChildAt: 官方文档:public View getChildAt (int index)Returns the view at the specified position in the group.Parameters index: the position at which to get the view from returns: the view at the spe 阅读详情
ListView中getChildAt(index)的使用注意事项
1.原理
在很多时候ListView列表数据不需要全部刷新,只需刷新有数据变化的那一条,这时可以用getChildAt(index)获取某个指定position的view,并对该view进行刷新。

注意:在ListView中,使用getChildAt(index)的取值,只能是当前可见区域(列表可滚动)的子项!

即取值范围在 >= ListView.getFirstVisiblePosition() &&  <= ListView.getLastVisiblePosition();
1)所以如果想获取前部的将会出现返回Null值空指针问题;
2)getChildCount跟getCount获取的值将会不一样(数量多时);
3 )如果使用了getChildAt(index).findViewById(...)设置值的话,滚动列表时值就会改变了。
   需要使用getFirstVisiblePosition()获得第一个可见的位置,再用当前的position-它,再用getChildAt取值!即getChildAt(position - ListView。getFirstVisiblePosition()).findViewById(...)去设置值
2.如果想更新某一行数据,需要配合ListView的滚动状态使用,一般不滚动时才加载更新数据

//全局变量,用来记录ScrollView的滚动状态,1表示开始滚动,2表示正在滚动,0表示停止滚动 
伪代码
ListView设置
public int scrollStates;
class OnScrollListenerImpl implements OnScrollListener{
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
scrollStates = scrollState; 
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
int lastInScreen = firstVisibleItem + visibleItemCount;
}
listView.setOnScrollListener(new OnScrollListenerImpl());


Activity中
if(scrollStates==OnScrollListener.SCROLL_STATE_IDLE){

更新视图数据
}
getChildAt() FrameLayout, getChildAt(i)获取一个布局中的的view,removeViewAt(i)表示删除一个布局中的view,其中i表示布局里面层次的索引。 阅读详情

相关推荐

getChildAt与getChildByName效率比较

getChildAt() 方法比getChildByName() 方法快。getChildAt() 方法从缓存数组中访问子项,而 getChildByName() 方法则必须遍历链接的列表来访问子项。

wkyb608的专栏 1928

Android——ListViewgetChildAt(index)使用注意事项

1.原理在很多时候ListView列表数据不需要全部刷新,只需刷新有数据变化的那一条,这时可以用getChildAt(index)获取某个指定position的view,并对该view进行刷新。 注意:在ListView中,使用getChildAt(index)的取值,只能是当前可见区域(列表可滚动)的子项! 即取值范围在 >= ListView.getFirstVisiblePosition()

小欣儿的专栏 2336

ListViewgetChildAt()方法以及BaseAdapter中getview使用

一、概述 在项目开发过程中,需要动态更新标题栏上下拉框中listview的每个item,要求是有未读信息时,添加一个红点标识。 这里主要使用CircleBadgeView这个控件,主要是想在不改变listview中item布局的情况下实现给每个item右边添加红点的效果。 二,动态更新红点标识的实现方式变迁 1、方法一: 刚开始希望通过遍历listview给需要添加红点的

u010727953的博客 1482

【转】ListViewgetChildAt(index)使用注意事项

1.原理 在很多时候ListView列表数据不需要全部刷新,只需刷新有数据变化的那一条,这时可以用getChildAt(index)获取某个指定position的view,并对该view进行刷新。 注意:在ListView中,使用getChildAt(index)的取值,只能是当前可见区域(列表可滚动)的子项! 即取值范围在 &gt;= ListView.getFirstVisiblePosi...

iteye_971的博客 151

Listview滑动超出显示区域时getChildAt(arg2)异常错误

转载自:ListViewgetChildAt(index)使用注意事项 1.原理在很多时候ListView列表数据不需要全部刷新,只需刷新有数据变化的那一条,这时可以用getChildAt(index)获取某个指定position的view,并对该view进行刷新。注意:在ListView中,使用getChildAt(index)的取值,只能是当前可见区域(列表可滚动)的子项!...

weixin_33872566的博客 346

ListViewgetChildAt(index)使用

1.原理 在很多时候ListView列表数据不需要全部刷新,只需刷新有数据变化的那一条,这时可以用getChildAt(index)获取某个指定position的view,并对该view进行刷新。 注意:在ListView中,使用getChildAt(index)的取值,只能是当前可见区域(列表可滚动)的子项! 即取值范围在 >= ListView.getFirstVisiblePo

liwei405499的专栏 619

ListView自定义后,在onItemClick中getChildAt返回null问题

本文地址:http://blog.csdn.net/you_and_me12/article/details/7271006 在ListView中,使用getChildAt(index)的取值,只能是当前可见区域(列表可滚动)的子项! 1、所以如果想获取前部的将会出现返回Null值问题; 2、getChildCount跟getCount获取的值将会不一样(数量多时); 3、如果使用了get

阿凯的专栏 8132
上一篇: apktool
下一篇: json数组对象和对象数组
syaka007
博客等级 码龄20年 110粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值