Android QQ 그룹 을 모방 하여 2 단계 메뉴 보 여주 기

15048 단어 Android2 단계 메뉴
본 논문 의 사례 는 안 드 로 이 드 가 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;
  }
 });

 }
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기