欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

备忘——仿QQ分组ExpandableListView(差强人意)修改过

程序员文章站 2022-06-03 12:55:26
...

网上查了下,然后知道就是在ExpandableListView上加个LinearLayout当指示器(不管是什么,一样效果就行,像QQ是自定义控件,很强大,可惜他不放源码出来),,,

 

xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ExpandableListView
        android:id="@+id/expandableListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:groupIndicator="@null"
        android:background="@color/whilte" >
    </ExpandableListView>

    <LinearLayout
        android:id="@+id/listView_guide"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:background="@color/whilte"
        android:orientation="vertical" >

    </LinearLayout>

</RelativeLayout>

 Activity:

OnClickListener myoClickListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			expandableListView_relationship.collapseGroup(gruopNum);
			listGuide.setVisibility(View.GONE);
		}
	};

	OnScrollListener myoOnScrollListener = new OnScrollListener() {
		
		@Override
		public void onScrollStateChanged(AbsListView view, int scrollState) {
			// TODO Auto-generated method stub

		}

@Override
		public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
			// TODO Auto-generated method stub
			TextView textNum = (TextView) view.findViewById(R.id.textView_num);//组标记			
			if (textNum != null) {
				gruopNum = Integer.valueOf(textNum.getText().toString());// 在adapter手动存
				if (expandableListView_relationship.isGroupExpanded(gruopNum)) {
					TextView childNum = (TextView) view.findViewById(R.id.child_num);//child标记
					// 已经打开
					int childCount = adapter.getChildrenCount(gruopNum) - 1;
					if(childCount<0){
      //没有child的,返回
      listGuide.setVisibility(View.GONE);  
      return;
     }
					if (childNum != null) {
						int childnum = Integer.valueOf(childNum.getText().toString());// 在adapter手动存				
						if (childCount == childnum) {
							// 最后一个child
							listGuide.setVisibility(View.GONE);		
							return;
						}
					}					
					listGuide.setVisibility(View.VISIBLE);
					gruopView = adapter.getGroupView(gruopNum, true, gruopView, null);//重新进来时,gruopView=null, 不然会报removeView()的错
					if(isFist){
						listGuide.addView(gruopView);
						isFist = false;
					}
					listGuide.invalidate();
				} else {
					listGuide.setVisibility(View.GONE);
				}				
			}
		}
	};