如何从EditText中的AlertDialog列表返回数据

时间:2016-01-29 08:09:23

标签: android dialog

我有一个可点击的EditText,当我点击EditText时,会打开一个对话框。该对话框有一个列表,该列表由保存在databaseHelper类中的数据填充。

当用户从对话框中选择一个项目时,该对话框应该关闭,所选数据应该插入EditText

AlertDialog ad;
EditText selectdata;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.Main_layout);
     final DBHelper db = new DBHelper(this);

    selectdata = (EditText) findViewById(R.id.tfselectcategory);


    selectdata.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            showDialog();
        }
    }); 


}

private void showDialog(){
    DBHelper db = new DBHelper(getApplicationContext());

    final AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setTitle("Choose Category");

    // Spinner Drop down elements
    List<String> lables = db.sniperdata();
 // Creating adapter for spinner
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_dropdown_item_1line, lables);
    dialog.setAdapter(dataAdapter, null);
    AlertDialog d = dialog.create();
    d.show();


}

2 个答案:

答案 0 :(得分:2)

为对话框列表项设置clickListner

dialog.setAdapter(dataAdapter,new DialogInterface.OnClickListener() {
   public void onClick(DialogInterface dialog, int item) {
           // write your code for dialog dismiss.
           Log.e("selected item=",lables.get(item));
   }
});

答案 1 :(得分:1)

您必须为OnClickListener对话框界面编码。

private void showDialog(){
    DBHelper db = new DBHelper(getApplicationContext());

    final AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setTitle("Choose Category");

    // Spinner Drop down elements
    final List<String> lables = db.sniperdata();
 // Creating adapter for spinner
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_dropdown_item_1line, lables);
    dialog.setAdapter(dataAdapter, new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int ind) {
            selectdata.setText(lables.get(ind));
        }
    });
    AlertDialog d = dialog.create();
    d.show();
}

试试这个。