안 드 로 이 드 밴드 group 지시기 의 ExpandableListView(자체 작성)
5134 단어 groupExpandableListView
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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" >
</ExpandableListView>
<FrameLayout
android:id="@+id/topGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</FrameLayout>
</FrameLayout>
그 중에서 가장 중요 한 것 은 다음 과 같은 부분 이다.우 리 는 onSroll 이라는 인터페이스 사건 을 감청 하고 ListView 가 미 끄 러 질 때 해당 하 는 처 리 를 한다.코드 에 주석 이 비교적 많 기 때문에 나 는 설명 을 많이 하지 않 는 다.
/**
* here is very importance for indicator group
*/
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
final ExpandableListView listView = (ExpandableListView) view;
/**
* calculate point (0,0)
*/
int npos = view.pointToPosition(0, 0);// firstVisibleItem
if (npos == AdapterView.INVALID_POSITION)//
return;
long pos = listView.getExpandableListPosition(npos);
int childPos = ExpandableListView.getPackedPositionChild(pos);// child id
int groupPos = ExpandableListView.getPackedPositionGroup(pos);// group id
if (childPos == AdapterView.INVALID_POSITION) {// child, group,
View groupView = listView.getChildAt(npos
- listView.getFirstVisiblePosition());// view
indicatorGroupHeight = groupView.getHeight();// group
indicatorGroup.setVisibility(View.GONE);//
} else {
indicatorGroup.setVisibility(View.VISIBLE);// child,
}
// get an error data, so return now
if (indicatorGroupHeight == 0) {
return;
}
// update the data of indicator group view
if (groupPos != indicatorGroupId) {// group
mAdapter.getGroupView(groupPos, listView.isGroupExpanded(groupPos),
indicatorGroup.getChildAt(0), null);// group
indicatorGroupId = groupPos;
Log.e(TAG, PRE + "bind to new group,group position = " + groupPos);
// mAdapter.hideGroup(indicatorGroupId); // we set this group view
// to be hided
//
indicatorGroup.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
listView.collapseGroup(indicatorGroupId);
}
});
}
if (indicatorGroupId == -1) // grop id ,
return;
/**
* calculate point (0,indicatorGroupHeight)
*/
int showHeight = indicatorGroupHeight;
int nEndPos = listView.pointToPosition(0, indicatorGroupHeight);// item
if (nEndPos == AdapterView.INVALID_POSITION)//
return;
long pos2 = listView.getExpandableListPosition(nEndPos);
int groupPos2 = ExpandableListView.getPackedPositionGroup(pos2);// group id
if (groupPos2 != indicatorGroupId) {// group
View viewNext = listView.getChildAt(nEndPos
- listView.getFirstVisiblePosition());
showHeight = viewNext.getTop();
Log.e(TAG, PRE + "update the show part height of indicator group:"
+ showHeight);
}
// update group position
MarginLayoutParams layoutParams = (MarginLayoutParams) indicatorGroup
.getLayoutParams();
layoutParams.topMargin = -(indicatorGroupHeight - showHeight);
indicatorGroup.setLayoutParams(layoutParams);
}
본문 원본 코드 다운로드마지막 으로 아이 폰 주소록 효 과 를 모방 한 또 다른 코드 를 공유 하 겠 습 니 다.이것 은 ListView 의 확장 으로 효과 가 가장 좋다.ExpandableListView 를 같은 효과 로 확장 할 수 있 는 고수 가 있 기 를 바 랍 니 다.원본 코드 다운로드
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
pandas 그룹 그룹과agg 집합의 실례단일 열 그룹 다중 열 그룹 그룹화 후 데이터 집합 일부 데이터에 대해 서로 다른 집합 작업만 하면 사전을 통해 구축할 수 있다 출력 출력 보충:pandas―매우 완전한 그룹by,agg, 표 데이터에 대한 그룹과 통...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.