Android中怎么實現(xiàn)二級菜單展示

本篇文章給大家分享的是有關(guān)Android中怎么實現(xiàn)二級菜單展示,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),北辰企業(yè)網(wǎng)站建設(shè),北辰品牌網(wǎng)站建設(shè),網(wǎng)站定制,北辰網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,北辰網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

1.首先要定義item,也就是二級展示的item

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. 其次,設(shè)置分組item

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. 創(chuàng)建相應(yīng)的數(shù)據(jù)對象

添加分組父菜單Group

Group.class

package com.example.m1.QQGroup;public class Group { private int mGroupImage; private String mGroupName; //分組名 private String mGroupNum; //分組人數(shù) 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

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; } /** * 設(shè)置子列表是否可以選中 * @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; //分組人數(shù) private boolean isDown; public ViewHolderGroup() {  isDown = false; } } private static class ViewHolderItem{ private TextView mName;//人名 private TextView mMotto; //簽名 private ImageView mPhoto; //頭像 }}

6. Main5Activity中填充數(shù)據(jù)

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); //數(shù)據(jù)準(zhǔn)備 gData = new ArrayList<Group>(); iData = new ArrayList<ArrayList<Item>>(); gData.add(new Group(R.drawable.triangle_right,"小學(xué)同學(xué)","1/7")); gData.add(new Group(R.drawable.triangle_right,"初中同學(xué)","2/7")); gData.add(new Group(R.drawable.triangle_down,"高中同學(xué)","3/7")); gData.add(new Group(R.drawable.triangle_right,"大學(xué)同學(xué)","4/7")); lData =new ArrayList<Item>(); //小學(xué)組 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); //大學(xué)組 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;  } }); }}

以上就是Android中怎么實現(xiàn)二級菜單展示,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享標(biāo)題:Android中怎么實現(xiàn)二級菜單展示
文章分享:http://muchs.cn/article48/jpedhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站營銷、Google用戶體驗、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)