2012-08-02 67 views
1

我有一个非常简单的问题。在我的包含可扩展列表视图的对话框中,当我单击一个孩子时,我想要执行一些操作并返回到活动。我的点击事件setOnChildClickListener()setOnGroupClickListener()都在工作,但我的alertdialog没有关闭。我想关闭我的alertdialog,单击列表中的小孩点击并返回到我的活动。任何人都可以帮忙吗?Expandable列表视图Child click监听器

代码:

final AlertDialog.Builder builder = new AlertDialog.Builder(
        TestActivity.this); 

     ExpandableListView dialogExpandableListView = new ExpandableListView(
       this); 
     dialogExpandableListView 
       .setAdapter(new EfficienctExpandableAdapter(
         this)); 
     dialogExpandableListView 
       .setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 

        @Override 
        public boolean onChildClick(ExpandableListView arg0, 
          View arg1, int arg2, int arg3, long arg4) { 
         // TODO Auto-generated method stub 

         Log.d("skt", "clicked parent " + arg2 + " child " 
           + arg3); 

         return false; 
        } 
       }); 

     dialogExpandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { 

      @Override 
      public boolean onGroupClick(ExpandableListView arg0, View arg1, int arg2, 
        long arg3) { 
       // TODO Auto-generated method stub 

       Log.d("skt", "group click --- clicked parent " + arg2); 
       return false; 
      } 
     }); 

     builder.setView(dialogExpandableListView); 

     builder.create(); 
     builder.show(); 
+0

后一些代码..这将有助于寻找你做什么 – GoCrazy 2012-08-02 12:06:14

+0

@Vinoth代码贴 – SKT 2012-08-02 12:19:18

回答

0

我想你开始在这里展示的Alertdialog

builder.setView(dialogExpandableListView); 
    builder.create(); 
    builder.show(); 

可是你有没有取消alertView任何地方。

尝试取消这里的alertView

@Override 
       public boolean onChildClick(ExpandableListView arg0, 
         View arg1, int arg2, int arg3, long arg4) { 
       Log.d("skt", "clicked parent " + arg2 + " child " 
          + arg3); 
       builder.cancel(); 
       //or 
       builder.dismiss(); 
       return false; 

    } 

希望它可以帮助

+0

我已经试过了。它说要制作一个DialogInterface。当我这样做时,我得到一个ClassCastException ((DialogInterface)构建器).dismiss();是我所做的... 你有没有试过这样做? – SKT 2012-08-02 13:10:25

+0

对不起,我现在不能测试它,因为我在工作。 – GoCrazy 2012-08-02 13:19:01

+0

我测试过了,它没有工作。如果你找到一种方法使其工作,请更新。 – SKT 2012-08-02 13:28:33