《Android群英传》读书记录
1、使用ViewHolder模式提高效率
在Adapter里定义一个内部类ViewHoleder ,将布局中的空间作为成员变量即可。
......
@Override
public View getView(int positon ,View contentView ,ViewGroup parent){
ViewHolder holder = null;
//判断是否缓存
if ( convertView == null ){
holder = new ViewHolder();
convertView= mInflater.inflate(R.layout.view_item,null);
holder.img = (ImageView) convertView.findViewById(R.id.iv);
holder.title = (TextView) convertView.findViewById(R.id.tv);
convertView.setTag(holder);
}else{
//通过tag找缓存的布局
holder = (ViewHolder)convertView.getTag();
}
holder.img.setBackgroundResource(R.mipmap.background);
holder.title.setText(mData.get(position));
return convertView;
}
public final class ViewHolder{
public ImageView img;
public TextView title;
}
......
2、设置分割线
android:divider="@android:color/red”
android:dividerHeight="10dp"
android:divider="@null”//透明
3、隐藏滚动条
android:scrollbars = "none"
4、取消ListView的item点击效果
android:listSelector = "#00000000"
android:listSelector = "@android:color/transparent"
5、设置ListView需要显示在第几项
listview.setSelection( n );
6、动态更新数据
listview.notifyDataSetChanged();
此方法必须保证数据list仍然是同一个list
7、遍历LlistView里所有item
for(int i = 0; i < mListView.getChildCount();i++){
View = view = mListView.getChildAt(i);
}
8、处理空的listview
listview.setEmptyView(findViewById(R.layout.empty_view));
9、滑动监听
OnTounchListener 是View中的监听事件根据 event.getAction()返回的三个事件来处理相应逻辑。ACTION_DOWN(触摸时操作)、ACTION_MOVE(移动时操作)和ACTION_UP(离开时操作)
OnScrollListener 是AbsListView 中的监听事件,有两个回调方法:onScrollStateChanged()和onScroll()。
onScrollStateChanged方法,是根据参数scrollState来决定回调次数,scrollState有三种模式 :
SCROLL_STATE_IDLE:滚动停止时
SCROLL_STATE_TOUCH_SCROLL :正在滚动时
SCROLL_STATE_FLING:手指抛动时,即用力滑动后,在离开后listview由于惯性继续滑动的状态。
当没有做抛动的状态时,这个方法回调两次,否则会回调三次。
onScroll方法,在listview滚动时会一直回调,方法中的三个int参数显示当前listview的滚动状态。
firstVisibleItem:当前能看见的第一个item的id(从0开始)
visibleItenCount:当前能看见的item总数(包括没有显示完整的,显示一半的也算)
totalItemCount:整个listview的item总数