How to add Three Level ListView in ExpandableListView in android

前端 未结 4 1447
清酒与你
清酒与你 2020-12-03 00:14

I want to add one more level of in ExpandableListView.In current ExpandableListView is two level how can i add one more level. I am new in android developing please help me.

4条回答
  •  心在旅途
    2020-12-03 00:35

    activity_main.xml

    
    
    
        
        
    
    
    

    MainActivity.Java

    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseExpandableListAdapter;
    import android.widget.ExpandableListView;
    import android.widget.ListView;
    
    import android.widget.TextView;
    
    import android.widget.LinearLayout.LayoutParams;
    
    
    public class Home extends Activity 
    {
    
    ExpandableListView explvlist;  
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        explvlist = (ExpandableListView)findViewById(R.id.ParentLevel);
        explvlist.setAdapter(new ParentLevel());
    
    }
    
    public class ParentLevel extends BaseExpandableListAdapter
    {
    
          @Override
          public Object getChild(int arg0, int arg1) 
          {   
           return arg1;
          }
    
          @Override
          public long getChildId(int groupPosition, int childPosition) 
          {
           return childPosition;
          }
    
          @Override
          public View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) 
          {
           CustExpListview SecondLevelexplv = new CustExpListview(Home.this);
           SecondLevelexplv.setAdapter(new SecondLevelAdapter());
           SecondLevelexplv.setGroupIndicator(null);   
           return SecondLevelexplv;
          }
    
          @Override
          public int getChildrenCount(int groupPosition) 
          {   
           return 3;
          }
    
          @Override
          public Object getGroup(int groupPosition) 
          {
           return groupPosition;
          }
    
          @Override
          public int getGroupCount() 
          {   
           return 5;
          }
    
          @Override
          public long getGroupId(int groupPosition) 
          {   
           return groupPosition;
          }
    
          @Override
          public View getGroupView(int groupPosition, boolean isExpanded,
            View convertView, ViewGroup parent) 
          {
           TextView tv = new TextView(Home.this);
           tv.setText("->FirstLevel");
           tv.setBackgroundColor(Color.BLUE);
           tv.setPadding(10, 7, 7, 7); 
    
           return tv;
          }
    
      @Override
      public boolean hasStableIds() 
      {
       return true;
      }
    
        @Override
      public boolean isChildSelectable(int groupPosition, int childPosition) 
      {
       return true;
      }     
    }
    
    public class CustExpListview extends ExpandableListView
    {
    
        int intGroupPosition, intChildPosition, intGroupid;
    
          public CustExpListview(Context context) 
          {
           super(context);     
          }
    
          protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
          {
           widthMeasureSpec = MeasureSpec.makeMeasureSpec(960, MeasureSpec.AT_MOST);
           heightMeasureSpec = MeasureSpec.makeMeasureSpec(600, MeasureSpec.AT_MOST);
           super.onMeasure(widthMeasureSpec, heightMeasureSpec);
          }  
    }
    
    public class SecondLevelAdapter extends BaseExpandableListAdapter
    {
    
      @Override
      public Object getChild(int groupPosition, int childPosition) 
      {   
        return childPosition;
      }
    
      @Override
      public long getChildId(int groupPosition, int childPosition) 
      {   
        return childPosition;
      }
    
      @Override
      public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) 
      {
        TextView tv = new TextView(Home.this);
        tv.setText("child");
        tv.setPadding(15, 5, 5, 5);
        tv.setBackgroundColor(Color.YELLOW);
        tv.setLayoutParams(new ListView.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
        return tv;
      }
    
      @Override
      public int getChildrenCount(int groupPosition) 
      {
        return 5;
      }
    
      @Override
      public Object getGroup(int groupPosition) 
      {   
        return groupPosition;
      }
    
      @Override
      public int getGroupCount() 
      {
        return 1;
      }
    
      @Override
      public long getGroupId(int groupPosition) 
      {
        return groupPosition;
      }
    
      @Override
      public View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) 
      {
           TextView tv = new TextView(Home.this);
           tv.setText("-->Second Level");
           tv.setPadding(12, 7, 7, 7);
           tv.setBackgroundColor(Color.RED);       
           return tv;
      }
    
    @Override
    public boolean hasStableIds()
    {
        // TODO Auto-generated method stub
        return true;
    }
    
    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition)
    {
        // TODO Auto-generated method stub
        return true;
    }
    
    }
    }
    

提交回复
热议问题