2013-01-23 22 views
1

我想要一个项目列表,当被点击时会打开另一个项目列表。而不像项目的子菜单。这是因为我的第一份名单变得越来越长,我想将它们组合成一个子菜单。如预期AlertDialog.Builder setItems与另一个列表

gridView.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, final int position, long id) { 

      final CharSequence[] items = {"Gallery Image Menu", "View pattern", "Delete pattern", "Locate pattern in list view", "Row Counter (with pattern)", "Share Pattern", "Share Image", "Cancel"}; 

      AlertDialog.Builder builder = new AlertDialog.Builder(grid.this); 
      builder.setTitle(selectedimage); 
      builder.setItems(items, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int item) { 


        if (item == 0){ 
         //first menu 1st item 
         dialog.dismiss(); 

         final CharSequence[] items2 = {"Rotate image 180"+"\u00B0", "Rotate image 90"+"\u00B0", "Add image from pattern", "Add image from file", "Add image from camera", "Remove image", "Cancel"}; 

         final AlertDialog.Builder builder2 = new AlertDialog.Builder(grid.this); 
         builder2.setTitle(selectedimage); 
         builder2.setItems(items2, new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog2, int item) { 


           if(item == 0){ 
            //2nd menu, 1st item 
            dialog2.dismiss(); 

            //do something 
            return; 
           } 

           if(item == 1){ 
            dialog2.dismiss(); 
            //2nd menu, 2nd item 
            //do something else 
            return; 
           } 


          AlertDialog alert2 = builder2.create(); 
          alert2.show(); 

          } 
         }); 
        } 


        if (item == 1){ 
         //first menu 2nd item 
        } 


        if(item == 2){ 
         //1st menu, 3rd item 
        } 


        if(item == 3){ 

        } 

        //..... etc 


       } 
      }); 
      AlertDialog alert = builder.create(); 
      alert.show(); 


     } 

    });//gridView.setOnItemClickListener 

第一建设者显示方式,但是当我选择,我想开第二个制造商的第一建设者关闭并返回到活动的第一个选项。

在调试模式下,第二个构建器代码被读取,就好像它要显示但是两者都关闭一样。

也许你不能这样做?

任何想法?

回答

1

你弄丢了

AlertDialog alert2 = builder2.create(); 
alert2.show(); 

一部分。将其移动3行后,});

+0

啊!感谢您指出了这一点。 – Mark