如何在Android中选择项目后关闭弹出列表视图

时间:2017-11-29 05:02:18

标签: java android sqlite listview

点击项目后尝试关闭列表视图。 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
        }
    });

3 个答案:

答案 0 :(得分:0)

AlertDialog.Builder有两个builder.setPositiveButton和builder.setNegativeButton()方法可以使用它。或者您需要使用简单的Dialog进行自定义视图。

答案 1 :(得分:0)

使用AlertDialog实例可以解除弹出,你无法通过AlertDialog.Builder实现

最终的AlertDialog对话框;                 最终AlertDialog.Builder alertDialog = new AlertDialog.Builder(LoginScreen.this);                 alertDialog.setCancelable(真);                 alertDialog.setTitle(&#34; DISTS&#34;);

            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();

答案 2 :(得分:-1)

您创建了Alert Dialog和Alert.dismiss()

public class Test {
    public DateTime A { get; set; }
    public Int32 B { get; set; }
    public Int64 C { get; set; }
    public DateTime? D { get; set; }
}

...Main...
        var @switch = new Dictionary<Type, Action> {
            { typeof(DateTime), () => Console.WriteLine("DateTime") },
            { typeof(Int32), () => Console.WriteLine("Int32") },
            { typeof(Int64), () => Console.WriteLine("Int64") },
            { typeof(DateTime?), () => Console.WriteLine("DateTime?") },
        };

        foreach (var prop in typeof(Test).GetProperties()) {
            @switch[prop.PropertyType]();
        }