kuyuzhiqi 2015-04-28 03:33 采纳率: 0%
浏览 1638

alertdialog无法获得输入框的值

android-listview子tiem点击弹出输入框无法显示和取值,代码如下
private void init() {
wifiFunction = new WifiFunction(WifiListActivity.this);
wifiFunction.startScan();
listView = (ListView) findViewById(R.id.listView1);
meWifiList = wifiFunction.getWifiList();
Log.e("TAG", meWifiList.toString());
listView.setAdapter(new MyAdapter(this, meWifiList));
listView.setOnItemClickListener(this);
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
    // TODO Auto-generated method stub
    listView.setItemsCanFocus(false);
    String title = meWifiList.get(position).SSID.toString();
    wifi_et1 = (EditText) view.findViewById(R.id.wifi_et1);
    AlertDialog.Builder builder = new AlertDialog.Builder(
            WifiListActivity.this);
    // builder.setView(view);
    builder.setTitle(title).setView(wifi_et1);
    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            dialog.cancel();
        }
    });
    builder.setPositiveButton("连接", null);
    builder.show();
}

如果用销毁parentView的方法,那么ListView会消失的,用系统的edittext不知道怎么取值

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 18:25
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Android中,onItemClick方法是在用户单击列表中的某个项时被调用的。这个方法接收四个参数:一个视图(view),它是一个AdapterView实例;两个long类型的参数,分别代表选中的索引和ID;最后一个参数是position

    在您的代码中,您创建了一个AlertDialog.Builder并设置了标题、内容和按钮。然后,您通过builder.show()来显示对话框。但是,在这里,当用户选择某条网络后,AlertDialog会覆盖了ListView,导致无法获取到用户的输入。

    要解决这个问题,您可以尝试以下几种方法:

    1. 使用DialogFragment替换AlertDialog

      Dialog dialog = new Dialog(...);
      dialog.show(getSupportFragmentManager(), "YourDialogTag");
      
    2. 创建一个自定义的Dialog类,其中包含一个EditText控件,并使用show()方法显示它。

    3. 将用户输入保存到数据库或文件中,而不是直接显示给用户。

    4. 如果您的应用支持双向数据绑定,请考虑使用RecyclerView替代ListView,因为RecyclerView允许您在事件发生时自动更新视图。

    5. 在用户单击列表项时,可以将用户输入存储在服务器上或者在本地缓存中。例如,您可以在onClick方法中设置一个监听器,每当有新的输入时,就将其发送到服务器。

    6. 如果您正在使用TextView作为输入框,可能是因为EditText的大小不合适。尝试调整其大小,使其更适合作为输入框。

    7. 有时,如果您只是想让用户知道他们选择了哪个选项,而不需要显示完整的网络名称,您可以使用Toast消息。Toast提供了实时通知的功能,无需等待对话框关闭即可查看结果。

    8. 如果您已经尝试过以上所有方法,但仍然无法解决问题,请提供更多关于您的应用程序和其他相关细节的信息,以便我能为您提供更具体的帮助。

    评论

报告相同问题?