• 09 ListView监听 ExpandableListView的使用总结


    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
    		 * 
    		 */
    		@Override
    		public void onScrollStateChanged(AbsListView view, int scrollState) {
    			// TODO Auto-generated method stub
    			
    			Log.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数
    		 */
    		@Override
    		public void onScroll(AbsListView view, int firstVisibleItem,
    				int visibleItemCount, int totalItemCount) {
    			// TODO Auto-generated method stub
    			
    			Log.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
    /**
    		 * 获取分组的个数
    		 */
    		@Override
    		public int getGroupCount() {
    			// TODO Auto-generated method stub
    			return groupData.length;
    		}
    
    		/**
    		 * 获取当前下标分组里的子元素的个数
    		 */
    		@Override
    		public int getChildrenCount(int groupPosition) {
    			// TODO Auto-generated method stub
    			return childData[groupPosition].length;
    		}
    
    		/**
    		 * 获取当前下标分组的数据
    		 */
    		@Override
    		public Object getGroup(int groupPosition) {
    			// TODO Auto-generated method stub
    			return groupData[groupPosition];
    		}
    
    		/**
    		 * 获取分组下标为groupPosition里子元素的下标为childPosition的数据
    		 */
    		@Override
    		public Object getChild(int groupPosition, int childPosition) {
    			// TODO Auto-generated method stub
    			return childData[groupPosition][childPosition];
    		}
    
    		/**
    		 * 获取下标为groupPosition分组的id
    		 */
    		@Override
    		public long getGroupId(int groupPosition) {
    			// TODO Auto-generated method stub
    			return groupPosition;
    		}
    
    		/**
    		 * 获取分组下标为groupPosition 里的子元素下标为childPosition元素的id
    		 */
    		@Override
    		public long getChildId(int groupPosition, int childPosition) {
    			// TODO Auto-generated method stub
    			return childPosition;
    		}
    
    		/**
    		 * 底层设计
    		 * 分组和子元素是否有稳定的id   底层的数据改变不会影响他们
    		 */
    		@Override
    		public boolean hasStableIds() {
    			// TODO Auto-generated method stub
    			return false;
    		}
    
    		/**
    		 * 分组的视图对象
    		 * 参数1:分组的位置下标
    		 * 参数2:当前分组是否展开
    		 * 参数3:复用的视图
    		 * 参数4:指明父控件 ExpandableListView
    		 */
    		@Override
    		public View getGroupView(int groupPosition, boolean isExpanded,
    				View convertView, ViewGroup parent) {
    			// TODO Auto-generated method stub
    			View 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
    		 */
    		@Override
    		public View getChildView(int groupPosition, int childPosition,
    				boolean isLastChild, View convertView, ViewGroup parent) {
    			// TODO Auto-generated method stub
    			
    			View 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可以被点击
    		 */
    		@Override
    		public boolean isChildSelectable(int groupPosition, int childPosition) {
    			// TODO Auto-generated method stub
    			return true;
    		}
    		
    	}

  • 相关阅读:
    Python魔法函数
    Python变量的本质与intern机制
    Python中IO概述
    自用官方文档索引(日常更新)
    关于 mysql json类型参数的查询过滤
    由于升级iOS版本导致证书丢失等一系列问题汇总
    Android系统获取手机型号和系统版本号,以及其他配置信息
    Android Debug证书过期的最佳解决方案
    关于编写高德导航Demo的手记(一)
    iOS6.0以上版本,关于NSDateFormatter的问题
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152277.html
Copyright © 2020-2023  润新知