【问题标题】:How to write AlertDialog for Buttons dynamically generated in GridView?如何为 GridView 中动态生成的按钮编写 AlertDialog?
【发布时间】:2013-05-15 04:04:54
【问题描述】:

我有一些 GridView 对象,例如在 PlayGameAcvitity 中实例化的“battlegrid”和“handfield”(它们是 PlayGameActivity 期间显示的布局的一部分)。网格视图由我编写的自定义适配器中的按钮动态填充。我希望在长按按钮时出现一个带有多个选项的 AlertDialog(来自here 的列表形式)。我不确定如何去做,因为我看到的所有示例都已在活动类中实现。但是,我的按钮的 LongClickListeners 在适配器代码中。

这是battlegrid gridview的部分适配器代码:

public View getView(int position, View convertView, ViewGroup parent) 
{
    Button btn;
    .
    .
    .
    btn.setLongClickable(true); //enable long press
     btn.setOnLongClickListener(new OnLongClickListener()
     {
         @Override
         public boolean onLongClick(View v)
         {
             //TODO: make alertdialog appear and do stuff with what was selected
             return true;
         } 
     });
    .
    .
    .
    return btn;
}

“handfield”适配器的代码与其他类似。我需要能够在此处显示带有选项列表的 AlertDialog,并根据所选内容实现发生的情况。 “battlegrid”中长按按钮出现的 AlertDialog 需要与“handfield”中长按按钮出现的不同。有没有办法做到这一点?如果这对于 AlertDialogs 来说是不可能的,我还可以使用其他东西吗?

【问题讨论】:

    标签: android gridview android-alertdialog android-button


    【解决方案1】:

    您可以定义一个 Listener 并将其发送到您的适配器。当你在getView中覆盖btn的onLongClick时,调用Listener的方法。并在您的活动中实施该方法。所以你可以在其中调出一个 AlertDialog 。看看这个:

    活动中:

    private YourListener listener = new YourListener() {
        @Override
        public void onListLongClick(long id, GridType type) {
            // bring up an AlertDialog according to GridType
        }
    }
    

    您必须在此之前定义一个YourListener 接口。并将这个 listener 变量发送到您的适配器。

    在适配器中调用:

    public View getView(int position, View convertView, ViewGroup parent) 
    {
        Button btn;
        .
        .
        .
        btn.setLongClickable(true); //enable long press
        btn.setOnLongClickListener(new OnLongClickListener()
        {
            @Override
            public boolean onLongClick(View v)
            {
                 listener.onListLongClick(getItemId(), GridType.battlegrid);
                 return true;
            } 
        });
        .
        .
        .
        return btn;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多