【问题标题】:Android: How to code an AlertDialog with onClickListener and onLongClickListenerAndroid:如何使用 onClickListener 和 onLongClickListener 编写 AlertDialog
【发布时间】:2016-10-18 13:41:01
【问题描述】:

正如标题所说。我已将 onClickListener 编码到我的 AlertDialog 但我不知道如何将 onLongClickListener 放在那里。

这是我的代码:

private void addRecipeMethod() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Title");
    adapter = new ArrayAdapter<>(getBaseContext(), android.R.layout.simple_list_item_1, getArrayList("ListOfRecipes"));
    builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            List<String> list = new ArrayList<>(getArrayList("ListOfRecipes"));
            getArrayListRecipes(list.get(which));
            List<String> listMain = new ArrayList<>(getArrayList("ListMain"));
            listMain.addAll(getArrayListRecipes(list.get(which)));
            saveList(listMain, "ListMain");

            adapter = new ArrayAdapter<>(getBaseContext(), android.R.layout.simple_list_item_1, getArrayList("ListMain"));
            listView.setAdapter(adapter);





            //Toast.makeText(getApplicationContext(), "you have clicked " + list.get(which) , Toast.LENGTH_SHORT).show();
        }
    });
    builder.show();
}

附言。单击菜单项时调用 void addRecipeMethod

【问题讨论】:

标签: java android onclicklistener android-alertdialog onlongclicklistener


【解决方案1】:

使用这样的自定义布局创建AlertDialog

    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
    // ...Irrelevant code for customizing the buttons and title
    LayoutInflater inflater = this.getLayoutInflater();
    View dialogView = inflater.inflate(R.layout.alert_label_editor, null);
    dialogBuilder.setView(dialogView);


    Button button = (Button)dialogBuilder.findViewById(R.id.btnName);

    button.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {

         //Commond here......

       }
   });

    button.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            // TODO Auto-generated method stub
            return false;
        }
    });

    AlertDialog alertDialog = dialogBuilder.create();
    alertDialog.show();

alert_label_editor xml 中添加按钮并为该按钮添加setOnLongClickListener

    Button button = (Button)dialogBuilder.findViewById(R.id.btnName);

    button.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            // TODO Auto-generated method stub
            return false;
        }
    });

【讨论】:

  • 这种方法应该可行。我更喜欢的另一种方法是在创建片段视图时使用DialogFragment 并在自定义布局中设置OnLongClickListener
  • 嗯,带按钮似乎是合乎逻辑的。但在我的情况下,我的 AlertDialog 中有 ListView,我希望该 ListView 上有 onClickListener 和 onLongClickListener
  • 可以在自定义布局中添加listview
  • 我无法使用 findViewById :(你能帮帮我吗?我在下面添加了问题
  • 试试这个 dialogView.findViewById (
猜你喜欢
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 1970-01-01
  • 2023-01-01
  • 2021-10-02
相关资源
最近更新 更多