09 ListView监听 ExpandableListView的使用总结

来源:互联网 发布:章淘客cms 编辑:程序博客网 时间:2024/06/07 07:55

1.ListView的滚动监听

>setOnScrollListener 监听//ListVIew滚动监听lv.setOnScrollListener(new OnScrollListener() {/** * 当滚动状态发生改变时 调用此方法 * 参数1:当前的ListView * 参数2:ListView 滚动状态 * scrollState: * SCROLL_STATE_IDLE:停止滚动的状态     常量值  0 * SCROLL_STATE_TOUCH_SCROLL:正在滚动  手指还在屏幕上  常量值 1 *  SCROLL_STATE_FLING :代表滚动  形成惯性的动作   常量值 2 *  */@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {// TODO Auto-generated method stubLog.e("AAA", "=====onScrollStateChanged==="+scrollState);//判断到了底部并且 滚动停止   加载更多if(isLast&&scrollState ==SCROLL_STATE_IDLE){Toast.makeText(MainActivity.this, "加载更多", Toast.LENGTH_SHORT).show();}}/** * 当前控件滚动时  调用此方法 * 参数1:当前的ListView * 参数2:当前屏幕展示第一条能看到的item的下标 * 参数3:屏幕展示能看到item的条数 * 参数4:listVIew 总的item数 */@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {// TODO Auto-generated method stubLog.e("AAA", "===onScroll==firstVisibleItem"+firstVisibleItem+"==visibleItemCount=="+visibleItemCount+"==totalItemCount="+totalItemCount);isLast = ((firstVisibleItem+visibleItemCount)==totalItemCount);}});

2,ListView的分页加载 >1,接口是分页加载的 >2,利用滚动监听 进行分页加载

3,ListView的图文混排 >概念:,先去下载字符串数据,将文本内容先展示出来,之后再下载图片 >注意:图片异位 >1,设置给控件一个图片 >2,给该控件设置标记(以图片的请求地址为标记) >3,判断反悔的 图片地址和控件里的设置的标记是否是同一个

回调接口:看图


5.ExpandableListView的使用

# 使用BaseExpandableListAdapter填充数据#有10个方法 分组4个  子元素4个   底层设计一个   子元素能否点击一个#4个监听
  • 分组的点击事件
  • setOnGroupClickListener
  • 子元素的点击事件
  • setOnChildClickListener
  • 分组展开的监听
  • setOnGroupExpandListener
  • 分组折叠的监听
  • setOnGroupCollapseListener
/** * 获取分组的个数 */@Overridepublic int getGroupCount() {// TODO Auto-generated method stubreturn groupData.length;}/** * 获取当前下标分组里的子元素的个数 */@Overridepublic int getChildrenCount(int groupPosition) {// TODO Auto-generated method stubreturn childData[groupPosition].length;}/** * 获取当前下标分组的数据 */@Overridepublic Object getGroup(int groupPosition) {// TODO Auto-generated method stubreturn groupData[groupPosition];}/** * 获取分组下标为groupPosition里子元素的下标为childPosition的数据 */@Overridepublic Object getChild(int groupPosition, int childPosition) {// TODO Auto-generated method stubreturn childData[groupPosition][childPosition];}/** * 获取下标为groupPosition分组的id */@Overridepublic long getGroupId(int groupPosition) {// TODO Auto-generated method stubreturn groupPosition;}/** * 获取分组下标为groupPosition 里的子元素下标为childPosition元素的id */@Overridepublic long getChildId(int groupPosition, int childPosition) {// TODO Auto-generated method stubreturn childPosition;}/** * 底层设计 * 分组和子元素是否有稳定的id   底层的数据改变不会影响他们 */@Overridepublic boolean hasStableIds() {// TODO Auto-generated method stubreturn false;}/** * 分组的视图对象 * 参数1:分组的位置下标 * 参数2:当前分组是否展开 * 参数3:复用的视图 * 参数4:指明父控件 ExpandableListView */@Overridepublic View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {// TODO Auto-generated method stubView view = LayoutInflater.from(MainActivity.this).inflate(R.layout.item_group, parent,false);TextView tv = (TextView) view.findViewById(R.id.tv_item_group);tv.setText(groupData[groupPosition]);return view;}/** * 子元素的视图 *  * 参数1:当前分组的下标 * 参数2:当前子元素的下标 * 参数3:是否是最后一个子元素视图 * 参数4:子元素复用视图 * 参数5:指明父控件 ExpandableListView */@Overridepublic View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {// TODO Auto-generated method stubView view = LayoutInflater.from(MainActivity.this).inflate(R.layout.item_child, parent,false);TextView tv = (TextView) view.findViewById(R.id.tv_item_child);tv.setText(childData[groupPosition][childPosition]);return view;}/** * 子元素能否被点击  false不能被点击   true可以被点击 */@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {// TODO Auto-generated method stubreturn true;}}

0 0
原创粉丝点击