import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.ExpandableListView; import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ExpandableListView.OnGroupClickListener; import android.widget.ExpandableListView.OnGroupCollapseListener; import android.widget.ExpandableListView.OnGroupExpandListener; import android.widget.Toast; public class MainActivity extends Activity { ExpandableListAdapter listAdapter; ExpandableListView expListView; List listDataHeader; HashMap> listDataChild; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Связываемся с нашим ExpandableListView: expListView = (ExpandableListView) findViewById(R.id.lvExp); //Подготавливаем список данных: prepareListData(); listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild); //Настраиваем listAdapter: expListView.setAdapter(listAdapter); expListView.setOnChildClickListener(new OnChildClickListener() { //Обработчик нажатий по пунктам меню: @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { Toast.makeText( getApplicationContext(), listDataHeader.get(groupPosition) + " : " + listDataChild.get( listDataHeader.get(groupPosition)).get( childPosition), Toast.LENGTH_SHORT) .show(); return false; } }); //Список раскрывается: expListView.setOnGroupExpandListener(new OnGroupExpandListener() { @Override public void onGroupExpand(int groupPosition) { Toast.makeText(getApplicationContext(), listDataHeader.get(groupPosition) + " Раскрыт", Toast.LENGTH_SHORT).show(); } }); //Список сворачивается: expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() { @Override public void onGroupCollapse(int groupPosition) { Toast.makeText(getApplicationContext(), listDataHeader.get(groupPosition) + " Свернут", Toast.LENGTH_SHORT).show(); } }); } /* * Подгтавливаем данные для списка: */ private void prepareListData() { listDataHeader = new ArrayList(); listDataChild = new HashMap>(); //Добавляем данные о пунктах списка: listDataHeader.add("Пункт 1"); listDataHeader.add("Пункт 2"); listDataHeader.add("Пункт 3"); //Добавляем данные о подпунктах: List top250 = new ArrayList(); top250.add("Подпункт 1.1"); top250.add("Подпункт 1.2"); top250.add("Подпункт 1.3"); top250.add("Подпункт 1.4"); top250.add("Подпункт 1.5"); top250.add("Подпункт 1.6"); top250.add("Подпункт 1.7"); List nowShowing = new ArrayList(); nowShowing.add("Подпункт 2.1"); nowShowing.add("Подпункт 2.2"); nowShowing.add("Подпункт 2.3"); nowShowing.add("Подпункт 2.4"); nowShowing.add("Подпункт 2.5"); nowShowing.add("Подпункт 2.6"); List comingSoon = new ArrayList(); comingSoon.add("Подпункт 3.1"); comingSoon.add("Подпункт 3.2"); comingSoon.add("Подпункт 3.3"); comingSoon.add("Подпункт 3.4"); comingSoon.add("Подпункт 3.5"); listDataChild.put(listDataHeader.get(0), top250); listDataChild.put(listDataHeader.get(1), nowShowing); listDataChild.put(listDataHeader.get(2), comingSoon); } }