Android QQ 그룹 을 모방 하여 2 단계 메뉴 보 여주 기
우선 실현 할 효 과 를 보 여 드 리 겠 습 니 다.
동적 보기
1.먼저 아 이 템,즉 2 급 전시 아 이 템 을 정의 해 야 합 니 다.
child_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/list_friend"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.makeramen.roundedimageview.RoundedImageView xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/iv"
android:layout_width="60dp"
android:layout_height="60dp"
android:gravity="center_horizontal"
android:src="#000000"
app:riv_border_color="#333333"
app:riv_border_width="3dip"
app:riv_corner_radius="10dip"
app:riv_mutate_background="true"
app:riv_oval="true" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_toRightOf="@id/iv"
android:orientation="vertical">
<TextView
android:id="@+id/friendname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text=" 1"
android:textColor="#000000"
android:textSize="30dp" />
<TextView
android:id="@+id/motto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text=" 1 "
android:textColor="#000000"
android:textSize="20dp" />
</LinearLayout>
</RelativeLayout>
효 과 는 다음 그림 과 같다.2.다음으로 그룹 아 이 템 설정
groupitem.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="wrap_content"
android:layout_marginBottom="10dp">
<ImageView
android:id="@+id/triangle_right"
android:layout_width="20dp"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:background="@drawable/triangle_right" />
<TextView
android:id="@+id/headtext"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_toLeftOf="@+id/online_people_num"
android:layout_toRightOf="@+id/triangle_right"
android:background="#E9E9E9"
android:text=" "
android:textSize="25dp" />
<TextView
android:id="@+id/online_people_num"
android:layout_width="60dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:gravity="center_horizontal|center_vertical"
android:text="0/15"
android:textColor="#000000" />
</RelativeLayout>
효과 아래 그림:3.해당 데이터 대상 만 들 기
그룹 부모 메뉴 추가 Group
Group.class
package com.example.m1.QQGroup;
public class Group {
private int mGroupImage;
private String mGroupName; //
private String mGroupNum; //
private boolean isDown;
public Group(int mGroupImage, String mGroupName, String mGroupNum) {
this.mGroupImage = mGroupImage;
this.mGroupName = mGroupName;
this.mGroupNum = mGroupNum;
}
public Group() {
this.isDown = false;
}
public void changeDownStatus(){
isDown = !isDown;
}
public boolean isDown() {
return isDown;
}
public void setDown(boolean down) {
isDown = down;
}
public int getmGroupImage() {
return mGroupImage;
}
public void setmGroupImage(int mGroupImage) {
this.mGroupImage = mGroupImage;
}
public String getmGroupName() {
return mGroupName;
}
public void setmGroupName(String mGroupName) {
this.mGroupName = mGroupName;
}
public String getmGroupNum() {
return mGroupNum;
}
public void setmGroupNum(String mGroupNum) {
this.mGroupNum = mGroupNum;
}
}
4.하위 메뉴 항목 추가Item.class
package com.example.m1.QQGroup;
public class Item {
private String mName;//
private String mMotto; //
private int mPhoto; //
public Item() {
}
public Item(String mName, String mMotto) {
this.mName = mName;
this.mMotto = mMotto;
}
public Item(String mName, String mMotto, int mPhoto) {
this.mName = mName;
this.mMotto = mMotto;
this.mPhoto = mPhoto;
}
public String getmName() {
return mName;
}
public void setmName(String mName) {
this.mName = mName;
}
public String getmMotto() {
return mMotto;
}
public void setmMotto(String mMotto) {
this.mMotto = mMotto;
}
public int getmPhoto() {
return mPhoto;
}
public void setmPhoto(int mPhoto) {
this.mPhoto = mPhoto;
}
}
5.어댑터 추가MyBaseExpandableListAdapter.class
package com.example.m1.QQGroup;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.m1.R;
import java.util.ArrayList;
public class MyBaseExpandableListAdapter extends BaseExpandableListAdapter {
private ArrayList<Group> gData; //
private ArrayList<ArrayList<Item>> iData; //
private Context mContext;
public MyBaseExpandableListAdapter(ArrayList<Group> gData, ArrayList<ArrayList<Item>> iData, Context mContext) {
this.gData = gData;
this.iData = iData;
this.mContext = mContext;
}
@Override
public int getGroupCount() {
return gData.size();
}
@Override
public int getChildrenCount(int i) {
return iData.get(i).size();
}
@Override
public Object getGroup(int i) {
return gData.get(i);
}
@Override
public Object getChild(int i, int i1) {
return iData.get(i).get(i1);
}
@Override
public long getGroupId(int i) {
return i;
}
@Override
public long getChildId(int i, int i1) {
return i1;
}
@Override
public boolean hasStableIds() {
return false;
}
/**
* ,
* @param i
* @param b
* @param view
* @param viewGroup
* @return
*/
@Override
public View getGroupView(final int i, boolean b, View view, final ViewGroup viewGroup) {
final ViewHolderGroup groupHolder;
if (view == null){
view = LayoutInflater.from(mContext).inflate(R.layout.groupitem,viewGroup,false);
groupHolder = new ViewHolderGroup();
groupHolder.mGroupImage = view.findViewById(R.id.triangle_right);
groupHolder.mGroupName = view.findViewById(R.id.headtext);
groupHolder.mGroupNum = view.findViewById(R.id.online_people_num);
view.setTag(groupHolder);
}else{
groupHolder = (ViewHolderGroup) view.getTag();
}
//groupHolder.mGroupImage.setImageResource(gData.get(i).getmGroupImage());
Log.d("gData",gData.get(i).getmGroupImage()+"");
Log.d("gData",gData.get(i).getmGroupName()+"");
groupHolder.mGroupName.setText(gData.get(i).getmGroupName());
groupHolder.mGroupNum.setText(gData.get(i).getmGroupNum());
return view;
}
@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
ViewHolderItem itemHolder;
if (view == null){
view = LayoutInflater.from(mContext).inflate(R.layout.child_item,viewGroup,false);
itemHolder = new ViewHolderItem();
itemHolder.mPhoto = view.findViewById(R.id.iv);
itemHolder.mMotto = view.findViewById(R.id.motto);
itemHolder.mName = view.findViewById(R.id.friendname);
view.setTag(itemHolder);
}else{
itemHolder = (ViewHolderItem) view.getTag();
}
itemHolder.mPhoto.setImageResource(iData.get(i).get(i1).getmPhoto());
itemHolder.mName.setText(iData.get(i).get(i1).getmName());
itemHolder.mMotto.setText(iData.get(i).get(i1).getmMotto());
return view;
}
/**
*
* @param i
* @param i1
* @return
*/
@Override
public boolean isChildSelectable(int i, int i1) {
return true;
}
private static class ViewHolderGroup{
private ImageView mGroupImage;
private TextView mGroupName; //
private TextView mGroupNum; //
private boolean isDown;
public ViewHolderGroup() {
isDown = false;
}
}
private static class ViewHolderItem{
private TextView mName;//
private TextView mMotto; //
private ImageView mPhoto; //
}
}
6.Main5Activity 에서 데 이 터 를 채 웁 니 다.Main5Activity.class
package com.example.m1.QQGroup;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.Toast;
import com.example.m1.R;
import java.util.ArrayList;
public class Main5Activity extends AppCompatActivity {
private ArrayList<Group> gData = null; //
private ArrayList<ArrayList<Item>> iData = null; //
private ArrayList<Item> lData = null;
private Context mContext;
private ExpandableListView mQQlist;
private MyBaseExpandableListAdapter myAdapter = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5);
mContext = Main5Activity.this;
mQQlist = findViewById(R.id.QQList);
//
gData = new ArrayList<Group>();
iData = new ArrayList<ArrayList<Item>>();
gData.add(new Group(R.drawable.triangle_right," ","1/7"));
gData.add(new Group(R.drawable.triangle_right," ","2/7"));
gData.add(new Group(R.drawable.triangle_down," ","3/7"));
gData.add(new Group(R.drawable.triangle_right," ","4/7"));
lData =new ArrayList<Item>();
//
lData.add(new Item(" 1"," ",R.drawable.f015));
lData.add(new Item(" 2"," ",R.drawable.f015));
lData.add(new Item(" 3"," ",R.drawable.f015));
lData.add(new Item(" 4"," ",R.drawable.f040));
lData.add(new Item(" 5"," ",R.drawable.f015));
lData.add(new Item(" 6"," ",R.drawable.f015));
lData.add(new Item(" 7"," ",R.drawable.f040));
iData.add(lData);
//
lData =new ArrayList<Item>();
lData.add(new Item(" 1"," , ",R.drawable.f015));
lData.add(new Item(" 2"," , ",R.drawable.f015));
lData.add(new Item(" 3"," , ",R.drawable.f040));
lData.add(new Item(" 4"," , ",R.drawable.f015));
lData.add(new Item(" 5"," , ",R.drawable.f040));
lData.add(new Item(" 6"," , ",R.drawable.f015));
lData.add(new Item(" 7"," , ",R.drawable.f040));
iData.add(lData);
//
lData =new ArrayList<Item>();
lData.add(new Item(" 1"," ",R.drawable.f015));
lData.add(new Item(" 2"," ",R.drawable.f040));
lData.add(new Item(" 3"," ",R.drawable.f015));
lData.add(new Item(" 4"," ",R.drawable.f040));
lData.add(new Item(" 5"," ",R.drawable.f015));
lData.add(new Item(" 6"," ",R.drawable.f040));
lData.add(new Item(" 7"," ",R.drawable.f015));
iData.add(lData);
//
lData =new ArrayList<Item>();
lData.add(new Item(" 1","I love you ",R.drawable.f015));
lData.add(new Item(" 2","I love you ",R.drawable.f015));
lData.add(new Item(" 3","I love you ",R.drawable.f040));
lData.add(new Item(" 4","I love you ",R.drawable.f015));
lData.add(new Item(" 5","I love you ",R.drawable.f040));
lData.add(new Item(" 6","I love you ",R.drawable.f015));
lData.add(new Item(" 7","I love you ",R.drawable.f015));
iData.add(lData);
myAdapter = new MyBaseExpandableListAdapter(gData,iData,mContext);
mQQlist.setAdapter(myAdapter);
mQQlist.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
Toast.makeText(mContext, " :" + iData.get(groupPosition).get(childPosition).getmName(), Toast.LENGTH_SHORT).show();
return true;
}
});
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.