2014-11-24 58 views
0

我的情景:微調從editext安卓

當我點擊頂部(+)圖標有一個與editext顯示一個對話框,如果我輸入一些文字,然後點擊OK按鈕上的文本應添加到我的微調我無法做到這一點。

這裏是我的意思是說:

enter image description here

這是我做了什麼:

protected void showInputDialog() { 

    // get prompts.xml view 
    LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this); 
    View promptView = layoutInflater.inflate(R.layout.input_dialog, null); 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
      MainActivity.this); 
    alertDialogBuilder.setView(promptView); 


    // setup a dialog window 
    alertDialogBuilder 
      .setCancelable(false) 
      .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        // Spinner element 
        listsp = (Spinner) findViewById(R.id.listspinner); 

        listtext = (EditText) findViewById(R.id.list_text); 
        list = new ArrayList<String>(); 
        list.add(listtext.getText().toString()); 
        listadapter = new ArrayAdapter<String>(getApplicationContext(), 
          android.R.layout.simple_spinner_item, list); 
        listadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
        listsp.setAdapter(adapter); 
       } 
      }) 
      .setNegativeButton("Cancel", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 

    // create an alert dialog 
    AlertDialog alert = alertDialogBuilder.create(); 
    alert.show(); 

} 

回答

0

嘗試更新的onClick外適配器:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //Whatever else 
    listsp = (Spinner) findViewById(R.id.listspinned); 
    list = new ArrayList<String>(); 
    listadapter = new MyArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, list); 
    listadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    listsp.setAdapter(adapter); 

}

protected void showInputDialog() { 

// get prompts.xml view 
LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this); 
View promptView = layoutInflater.inflate(R.layout.input_dialog, null); 
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
     MainActivity.this); 
alertDialogBuilder.setView(promptView); 


// setup a dialog window 
alertDialogBuilder 
     .setCancelable(false) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       listtext = (EditText) findViewById(R.id.list_text); 
       updateAdapter(listtext.getText().toString()); 
      } 
     }) 
     .setNegativeButton("Cancel", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         dialog.cancel(); 
        } 
       }); 

// create an alert dialog 
AlertDialog alert = alertDialogBuilder.create(); 
alert.show(); 

} 

protected void updateAdapter(String input) { 
    list.add(input); 
    listadapter.notifyDataSetChanged(); 
} 

編輯:這裏是如何實現您的自定義適配器(我把它做成私有的,所以它會使用相同的dataList。因此,你不需要調用任何updateData()功能,只需通知該數據已與notifyDataSetChanged()改變適配器):

private class MyArrayAdapter extends BaseAdapter implements SpinnerAdapter { 

     @Override 
     public int getCount() { 
      return list.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      return list.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      return position; 
     } 

     @Override 
     public View getView(int position, View view, ViewGroup parent) { 
      TextView text = new TextView(lexs); 
      text.setText(list.get(position).getName()); 
      return text; 
     } 

    } 
+0

感謝西蒙你reply..Can我知道我該如何添加自己的適配器爲了這個......你能說我該怎麼做? – coder 2014-11-24 14:48:48

+0

查看我的編輯,快速創建適配器 – NSimon 2014-11-24 14:58:16