Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击菜单项后显示可展开列表_Android_Listview_Menu_Click - Fatal编程技术网

Android 单击菜单项后显示可展开列表

Android 单击菜单项后显示可展开列表,android,listview,menu,click,Android,Listview,Menu,Click,我想在点击菜单项后显示Expandablelist,我已经按照本教程进行了操作 但这里Expandablelist位于main.xml上,而不是另一个xml文件中的me。 我之所以在这行下面划线,是因为我没有用ExpandableListActivity扩展我的应用程序,但如果我用ExpandableListActivity替换活动,我的应用程序将无法工作: expList = getExpandableListView();//red inderligned line 我的代码 public

我想在点击菜单项后显示Expandablelist,我已经按照本教程进行了操作

但这里Expandablelist位于main.xml上,而不是另一个xml文件中的me。 我之所以在这行下面划线,是因为我没有用ExpandableListActivity扩展我的应用程序,但如果我用ExpandableListActivity替换活动,我的应用程序将无法工作:

expList = getExpandableListView();//red inderligned line
我的代码

public class Myapp extends Activity implements OnClickListener {
static final String[][] exp_channels = {
    {"Nazionale", "Abruzzo", "Altoadige","Basilicata", "Calabria", "Campania", "Emilia", "Friuli", "Lazio", "Liguria", "Lombardia", 
    "Marche", "Molise", "Piemonte", "Puglia", "Sardegna", "Sicilia", "Toscana", "Trentino", "Umbria", "Aosta", "Veneto" },
};

DisplayMetrics metrics;
 int width;
 ExpandableListView expList;

public boolean onCreateOptionsMenu(Menu menu)
 {

    getMenuInflater().inflate(R.menu.menu, menu);
    return true;
 }
public Dialog onCreateDialog(int id) {

     switch (id) {
     case 1: //Country Menu item

            metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(metrics);
            width = metrics.widthPixels;
            expList = getExpandableListView();
            //this code for adjusting the group indicator into right side of the view
            //expList.setIndicatorBounds(width - GetDipsFromPixel(50), width - GetDipsFromPixel(10));
            expList.setAdapter(new ExpAdapter(this));

      expList.setOnGroupExpandListener(new OnGroupExpandListener()
      {
       //@Override
       public void onGroupExpand(int groupPosition) 
       {
        //Log.e("onGroupExpand", "OK");
       }
      });

      expList.setOnGroupCollapseListener(new OnGroupCollapseListener()
      {
       //@Override
       public void onGroupCollapse(int groupPosition) 
       {
        //Log.e("onGroupCollapse", "OK");
       }
      });

      expList.setOnChildClickListener(new OnChildClickListener()
      {
       //@Override
       public boolean onChildClick(ExpandableListView parent, View v,
         int groupPosition, int childPosition, long id) {
        //Log.e("OnChildClickListener", "OK");
        return false;
       }
      });
         break;
}

   AlertDialog MyAlert  = alert.create();
    return MyAlert;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
     switch (item.getItemId()) {
     case R.id.country:
         onCreateDialog(1).show();
         break;
     }
     return false;
 }

public class ExpAdapter extends BaseExpandableListAdapter {

      private Context myContext;
      public ExpAdapter(Context context) {
       myContext = context;
      }
      //@Override
      public Object getChild(int groupPosition, int childPosition) {
       return null;
      }

      //@Override
      public long getChildId(int groupPosition, int childPosition) {
       return 0;
      }

      //@Override
      public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {

       if (convertView == null) {
        LayoutInflater inflater =  (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.child_row, null);
       }

       TextView tvPlayerName = (TextView) convertView.findViewById(R.id.tvPlayerName);
       tvPlayerName.setText(exp_channels[groupPosition][childPosition]);

       return convertView;
      }

      //@Override
      public int getChildrenCount(int groupPosition) {
       return exp_channels[groupPosition].length;
      }

      //@Override
      public Object getGroup(int groupPosition) {
       return null;
      }

      //@Override
      public int getGroupCount() {
       return exp_channels.length;
      }

      //@Override
      public long getGroupId(int groupPosition) {
       return 0;
      }

      //@Override
      public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {

       if (convertView == null) {
        LayoutInflater inflater =  (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.group_row, null);
       }

       TextView tvGroupName = (TextView) convertView.findViewById(R.id.tvGroupName);
       tvGroupName.setText(lang_country[groupPosition]);

       return convertView;
      }

      //@Override
      public boolean hasStableIds() {
       return false;
      }

      //@Override
      public boolean isChildSelectable(int groupPosition, int childPosition) {
       return true;
      }
     }
myexplist:

<?xml version="1.0" encoding="utf-8"?>
<ExpandableListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</ExpandableListView>

group_row.xml:

<?xml version="1.0" encoding="utf-8"?>
<linearlayout android:id="@+id/groupname" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="40dip">

     <TextView android:id="@+id/tvGroupName" android:layout_width="wrap_content" android:layout_height="40dip" 
         android:textSize="16sp" android:textStyle="bold" android:paddingLeft="30dip" android:gravity="center_vertical">
         </TextView>
</linearlayout>

child_row.xml

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" 
android:layout_width="fill_parent" android:layout_height="40dip" android:gravity="center_vertical">
<textview android:id="@+id/tvPlayerName" android:paddingLeft="50dip" android:textSize="14sp" android:layout_width="wrap_content"
     android:layout_height="30dip" android:gravity="center_vertical">
    </textview>  
</linearlayout>