Expandable ListView in Android Studio

Android Expandable ListView in android is a view that shows items in a vertically scrolling two-level list. It differs from a ListView by allowing two levels which are groups that can be easily expanded and collapsed by touching to view and their respective children items.

Expandable ListView in android shows items in a vertically scrolling two-level list.  The items come from the ExpandableListAdapter associated with this view.

Expanded ListView
Expanded ListView
main_activity.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
   xmlns:app=”http://schemas.android.com/apk/res-auto”
   xmlns:tools=”http://schemas.android.com/tools”
   android:layout_width=”match_parent”
   android:layout_height=”match_parent”
   app:layout_behavior=”@string/appbar_scrolling_view_behavior”
   tools:context=”csdevbin.arham.expandablelistview.MainActivity”
   tools:showIn=”@layout/activity_main”>
                                      
    <LinearLayout
        android:layout_width=”match_parent”
       android:layout_height=”match_parent”
       android:layout_centerHorizontal=”true”
       android:layout_centerVertical=”true”
       android:orientation=”vertical”>
 
        <ExpandableListView
            android:id=”@+id/expan”
           android:layout_width=”match_parent”
           android:layout_height=”match_parent” />
    </LinearLayout>
</RelativeLayout>
MainActivity.java
 
package csdevbin.arham.expandablelistview;
 
  import android.os.Bundle;
  import android.support.v7.app.AppCompatActivity;
  import android.view.View;
  import android.view.Menu;
  import android.view.MenuItem;
  import android.widget.ExpandableListView;
 
  public class MainActivity extends AppCompatActivity {
    ExpandableListView expandableListView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        expandableListView = (ExpandableListView) findViewById(R.id.expan);
        ExpandableListviewAdapter adapter = new ExpandableListviewAdapter(this);
        expandableListView.setAdapter(adapter);
    }
}
 
ExpandableListviewAdapter.java
package csdevbin.arham.expandablelistview;
  import android.content.Context;
  import android.graphics.Color;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.BaseExpandableListAdapter;
  import android.widget.TextView;
  import android.widget.Toast;
  public class ExpandableListviewAdapter extends BaseExpandableListAdapter {
    String[] groupNames = {“Asia”, “Europe”, “Africa”};
    String[][] childNames = {{“Nepal”, “Bhutan”, “India”, “Sri Lanka”},
            {“England”, “France”, “Ireland”},
            {“Egypt”, “Congo”, “South Africa”}
    };
    Context context;
    public ExpandableListviewAdapter(Context context) {
        this.context = context;
    }
    @Override
    public int getGroupCount() {
        return groupNames.length;
    }
    @Override
    public int getChildrenCount(int i) {
        return childNames[i].length;
    }
    @Override
    public Object getGroup(int i) {
        return groupNames[i];
    }
    @Override
    public Object getChild(int i, int i1) {
        return childNames[i][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;
    }
    @Override
    public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
        TextView textView = new TextView(context);
        textView.setText(groupNames[i]);
        textView.setPadding(100, 0, 0, 0);
        textView.setTextColor(Color.BLUE);
        textView.setTextSize(40);
        return textView;
    }
    @Override
    public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
        final TextView textView = new TextView(context);
        textView.setText(childNames[i][i1]);
        textView.setPadding(100, 0, 0, 0);
        textView.setTextColor(Color.RED);
        textView.setTextSize(30);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(context, textView.getText().toString(), Toast.LENGTH_SHORT).show();
            }
        });
        return textView;
    }
    @Override
    public boolean isChildSelectable(int i, int i1) {
        return false;
    }
}

Leave a Comment

Your email address will not be published. Required fields are marked *