【问题标题】:How to close a pop up list view after selecting an item in Android在Android中选择项目后如何关闭弹出列表视图
【发布时间】:2017-11-29 05:02:17
【问题描述】:

单击某个项目后尝试关闭列表视图。 listview 会弹出一个项目列表,在我单击一个项目后,它会停留在那里。 dialog.dismiss()listviews 有类似的东西吗?

     final ListView lvUser = new ListView(this);
    userList = tmDB.getAllUsers();
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(R.string.selectUser);
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, userList);
    lvUser.setAdapter(arrayAdapter);
    builder.setView(lvUser);

    //when user selects item
    lvUser.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String name = userList.get(position);
            int userID;
            userID = tmDB.getUserId(name);
            txtName.setText(name);
// close the list view after selecting an item
        }
    });

【问题讨论】:

  • 您是否尝试过关闭 listView click 上的对话框??
  • 查看我更新的帖子,它会对你有所帮助

标签: java android sqlite listview


【解决方案1】:

你必须使用like

 public AlertDialog alertDialog;

        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(R.string.selectUser);
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(Main3Activity.this, android.R.layout.simple_list_item_1, userList);
        lvUser.setAdapter(arrayAdapter);
        builder.setView(lvUser);

        //when user selects item
        lvUser.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String name = userList.get(position);
                int userID;
                userID = tmDB.getUserId(name);
                txtName.setText(name);
// close the list view after selecting an item
                alertDialog.dismiss();

            }
        });

        alertDialog = builder.create();
        alertDialog.show();

【讨论】:

    【解决方案2】:

    AlertDialog.Builder 有两个 builder.setPositiveButton 和 builder.setNegativeButton() 方法来使用它。或者您需要使用简单的对话框来自定义视图。

    【讨论】:

      【解决方案3】:

      您创建了警报对话框和 Alert.dismiss()

       final AlertDialog.Builder builder;
       AlertDialog alert;
       final ListView lvUser = new ListView(this);
       userList = tmDB.getAllUsers();
       builder = new AlertDialog.Builder(this);
       builder.setTitle(R.string.selectUser);
       ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, userList);
       lvUser.setAdapter(arrayAdapter);
       //when user selects item
       lvUser.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              String name = userList.get(position);
              int userID;
              userID = tmDB.getUserId(name);
              txtName.setText(name);
          // This!!
          if(alert != null){
              alert.dismiss();
          }
          }
       });
       builder.setView(lvUser);
       alert = builder.create
       alert.show();
      

      【讨论】:

      • AlertDialog.Builder 不包含解除方法
      • 编辑代码。警报创建和此警报解除()
      【解决方案4】:

      使用 AlertDialog 实例可以关闭弹出窗口,通过 AlertDialog.Builder 无法实现

      最终的 AlertDialog 对话框; final AlertDialog.Builder alertDialog = new AlertDialog.Builder(LoginScreen.this); alertDialog.setCancelable(true); alertDialog.setTitle("日期列表");

                  ListView listView = new ListView(getApplicationContext());
                  final String[] listOfDays = {"MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"};
                  final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(LoginScreen.this, android.R.layout.simple_list_item_1, listOfDays);
                  listView.setAdapter(arrayAdapter);
                  alertDialog.setView(listView);
      
                  dialog = alertDialog.create();
      
                  listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                      @Override
                      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                          Toast.makeText(LoginScreen.this,arrayAdapter.getItem(position)+" CLICKED",Toast.LENGTH_LONG).show();
                          dialog.dismiss();
                      }
                  });
      
                  dialog.show();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-24
        • 2014-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多