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;
		}
		
	}

posted on 2016-09-01 17:10  木鱼哥  阅读(237)  评论(0编辑  收藏  举报

导航