Android UI 컨트롤 ExpandableListView 기본 사용법 상세 설명
7816 단어 android컨트롤expandableListView
ExpandableListView 도입
ExpandableListView 는 두 단계 목록 의 항목 을 수직 으로 스크롤 하여 표시 할 수 있 습 니 다.이것 은 목록 보기(ListView)와 다 릅 니 다.ExpandableListView 는 두 가지 차원 을 허용 합 니 다.1 급 목록 에 2 급 목록 이 있 습 니 다.
예 를 들 어 핸드폰 설정 에서 분류 에 좋 은 효과 가 있다.휴대 전화 버 전 QQ 도 이런 효과 다.
ExpandableListView 를 사용 하 는 전체적인 사고방식
(1)ExpandableListView 에 어댑터 를 설정 하려 면 데이터 원본 을 먼저 설정 해 야 합 니 다.
(2)데이터 원본 은 바로 이곳 의 어댑터 클래스 ExpandableAdapter 입 니 다.이 방법 은 BaseExpandableListAdapter 를 계승 하여 10 가지 방법 을 다시 써 야 합 니 다.
데이터 원본 에 서 는 사용자 정의 View 레이아웃 을 사 용 했 습 니 다.이 때 는 자신의 수요 에 따라 그룹 과 하위 항목 의 레이아웃 스타일 을 설정 합 니 다.
getChildView()와 getGroupView()방법 으로 사용자 정의 레이아웃 을 설정 합 니 다.
(3)데이터 원본 을 설정 하고 ExpandableListView.setAdapter()에 직접 주면 이 수축 기능 을 실현 할 수 있 습 니 다.
ExpandableListView 의 전체 코드 구현
(1)activity_main.xml:안에 ExpandableListView 컨트롤 을 설치 합 니 다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.smyhvae.expandablelistviewdemo.MainActivity">
<ExpandableListView
android:id="@+id/expandableListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</RelativeLayout>
(2)item_group.xml:1 급 목록 의 item 레이아웃
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#cccccc"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_group"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:gravity="center"
android:text="group text"
android:textColor="#000000"
/>
</LinearLayout>
(3)item_child.xml:2 급 목록 의 item 레이아웃
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv_child"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@mipmap/ic_launcher"/>
<TextView
android:id="@+id/tv_child"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="item text"
android:textColor="#000000"/>
</LinearLayout>
(4)MainActivity.java:
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
//View
private ExpandableListView expandableListView;
//Model:
private String[] groups = {"A", "B", "C"};
// , {{"A1,A2,A3,A4"}, {"B1,B2,B3,B4,B5"}, {"C1,C2,C3,C4"}}
private String[][] childs = {{"A1", "A2", "A3", "A4"}, {"A1", "A2", "A3", "B4"}, {"A1", "A2", "A3", "C4"}};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
expandableListView = (ExpandableListView) findViewById(R.id.expandableListView);
expandableListView.setAdapter(new MyExpandableListView());
}
// ExpandableListView
class MyExpandableListView extends BaseExpandableListAdapter {
//
@Override
public int getGroupCount() {
return groups.length;
}
//
@Override
public int getChildrenCount(int groupPosition) { // groupPosition
Log.d("smyhvae", "-->" + groupPosition);
return childs[groupPosition].length;
}
// item( )
@Override
public Object getGroup(int groupPosition) {
return groups[groupPosition];
}
// item( )
@Override
public Object getChild(int groupPosition, int childPosition) {
return childs[groupPosition][childPosition]; // groups[groupPosition][childPosition]
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
// item id ? true
@Override
public boolean hasStableIds() {
return true;
}
//【 】
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.item_group, null);
} else {
}
TextView tv_group = (TextView) convertView.findViewById(R.id.tv_group);
tv_group.setText(groups[groupPosition]);
return convertView;
}
//【 】
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.item_child, null);
}
ImageView iv_child = (ImageView) convertView.findViewById(R.id.iv_child);
TextView tv_child = (TextView) convertView.findViewById(R.id.tv_child);
//iv_child.setImageResource(resId);
tv_child.setText(childs[groupPosition][childPosition]);
return convertView;
}
// item ? true
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
}
주:ConvertView 와 View Holder 의 최 적 화 를 스스로 완성 하 십시오. 프로젝트 파일:(Android Studio 2.1)http://xiazai.jb51.net/201609/yuanma/AndroidExpandableListView(jb51.net).rar
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.