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

android 群英传笔记 listview的一些相关小记录

2017-03-07 15:35 549 查看
一:ListView常用优化技巧

1.使用ViewHolder模式提高效率:充分利用了视图缓存机制,避免每次都调用getview()的时候去findViewById实例化控件。在adapter中定义一个ViewHolder即可

2.设置子item间分割性:在XML中  android:dividerHeight="10dp"

android:divider=“@android:color/darker_gray”     //设置成@null时为透明

3.隐藏滚动条:android:scrollbars=“none”

4.取消listview的item点击效果:android:listSelector="#000000"

5.设置listview需要显示在第几项: lstview.setSelection(N) N就是需要现实的第N个Item这个方法类似乳scrollTo是瞬间完成移动的,除此之外,还可以使用  
listview.smoothScrollBy(distance,duration)

listview.smoothScrollByOffset(offset)

listview.smoothScrollToPosition(index)来实现平滑移动

6.动态修改listview  修改listview的数据源调用listview的adapter.notifyDateSetChanged()

7.遍历所有的item

for(int i=0;i<listView.getChildCount();i++){

View view = listView.getChildAt(i)

}

8.处理空的listview:listview设置了setEmptyView(R.id.empty_view)的方法,当填充listview的数据源为空时,就会显示empty_view。这个布局就写在与listview布局同级的activity布局中。这个activity用framelayout布局就行。

9.listview滑动监听:

onTouchListener 是view中的监听事件 :通过监听ACTION_DOWN, ACTION_MOVE ,ACTION_UP,这三个事件发生时的坐标,就可以判断用户滑动的方向,并在不同的事件中进行相应的逻辑处理。

onScollListener 是AbsListView的监听事件:可以监听listview的滚动状态。可以判断是否滚动到最后一行,判断上滑还是下滑。

二 listview的常用扩展

不同种类的item布局,在listview的adapter中

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (view != null){
if (getItemViewType(i) == 0){
//               给viewholder填充一种布局
}else {
//               给viewholder填充另外一种布局
}
}
return view;
}

@Override
public int getItemViewType(int position) {
//       这里返回数据源中的item类型
return  dataList.get(position).getType();
}

@Override
public int getViewTypeCount() {
//        这里返回数据源中不同item类型的种类
return 2;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息