2015-02-05 48 views
0

我搜索了一個解決方案,以避免在動態創建的微調器上自動選擇。我發現鏈接:Spinner onItemSelected() executes when it is not suppose toOn Spinner init - >自動選擇避免

但我不能讓它在我的代碼工作:

private void populateSpinner() { 
     //Spinner spinnerKostenstellen; 
     //spinnerKostenstellen = (Spinner) findViewById(R.id.spinner2); 
     //spinnerKostenstellen = (Spinner) SpinnerLayout.findViewById(R.id.spinner2); 

     AlertDialog.Builder adb2 = new AlertDialog.Builder(this); 
     LayoutInflater adbInflater2 = LayoutInflater.from(this); 
     View SpinnerLayout = adbInflater2.inflate(R.layout.spinner, null); 
     adb2.setView(SpinnerLayout); 
     adb2.setTitle("Kostenstelle auswählen:"); 
     spinnerKostenstellen = (Spinner) SpinnerLayout.findViewById(R.id.spinner2); 
     spinnerKostenstellen.setSelection(1, false); 
     spinnerKostenstellen.setOnItemSelectedListener(this); 
     //spinnerKostenstellen.setCallbackDuringFling(false); 
     List<String> lables = new ArrayList<String>(); 

     for (int i = 0; i < kostenstellenList.size(); i++) { 
      lables.add(kostenstellenList.get(i).getKst()); 
     } 

     // Creating adapter for spinner 
     //ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item); 

     //ArrayAdapter<String> kostenstellenList = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item); 
     ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, lables); 
     // Drop down layout style - list view with radio button 
     spinnerAdapter 
       .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // attaching data adapter to spinner 
     spinnerKostenstellen.setAdapter(spinnerAdapter); 
     adb2.show(); 
    } 

回答

0

(編輯)下面的代碼隱藏第一空白值從旋轉

List<String> urlist = new ArrayList<String>(); 
urlist.add(""); // Initial dummy entry 
urlist.add("yourstring1"); 
urlist.add("yourstring2"); 
urlist.add("yorustring3"); 


ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, urlist) { 
    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) 
    { 
     View v = null; 

     // If this is the initial blnk entry, make it hidden 
     if (position == 0) { 
      TextView tv = new TextView(getContext()); 
      tv.setHeight(0); 
      tv.setVisibility(View.GONE); 
      v = tv; 
     } 
     else { 
      // Pass convertView as null to prevent reuse of special case views 
      v = super.getDropDownView(position, null, parent); 
     } 

     return v; 
    } 
}; 

dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
mySpinner.setAdapter(dataAdapter); 
+1

在類型AbsSpinner的方法爲setSelection(INT)是不適用的參數(字符串) – hevilp 2015-02-05 17:00:36

+0

當你拿到項目的數組列表然後插入一個空白項目在你自己的任何位置和setSelection(yourCustomaddedposition)。 – Shadik 2015-02-05 17:08:18

+0

而在適配器中,您可以將if((item!= null)&&(position == yourcustomaddedposition))的條件放入row.setVisibility(View.GONE);其他{ } } – Shadik 2015-02-05 17:09:19

0

顯示對話框後(也是在適配器設置後),嘗試更改要設置的OnItemSelectedListener。這應該可以防止微調員在用戶選擇某個東西之前觸發其聽衆。 YOURCLASSNAME不管你的當前類的名稱,該代碼人死亡。

private void populateSpinner() { 
    //Spinner spinnerKostenstellen; 
    //spinnerKostenstellen = (Spinner) findViewById(R.id.spinner2); 
    //spinnerKostenstellen = (Spinner) SpinnerLayout.findViewById(R.id.spinner2); 

    AlertDialog.Builder adb2 = new AlertDialog.Builder(this); 
    LayoutInflater adbInflater2 = LayoutInflater.from(this); 
    View SpinnerLayout = adbInflater2.inflate(R.layout.spinner, null); 
    adb2.setView(SpinnerLayout); 
    adb2.setTitle("Kostenstelle auswählen:"); 
    spinnerKostenstellen = (Spinner) SpinnerLayout.findViewById(R.id.spinner2); 
    spinnerKostenstellen.setSelection(1, false); 
    //spinnerKostenstellen.setCallbackDuringFling(false); 
    List<String> lables = new ArrayList<String>(); 

    for (int i = 0; i < kostenstellenList.size(); i++) { 
     lables.add(kostenstellenList.get(i).getKst()); 
    } 

    // Creating adapter for spinner 
    //ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item); 

    //ArrayAdapter<String> kostenstellenList = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item); 
    ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, lables); 
    // Drop down layout style - list view with radio button 
    spinnerAdapter 
     .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    // attaching data adapter to spinner 
    spinnerKostenstellen.setAdapter(spinnerAdapter); 
    // use .create to get the AlertDialog 
    AlertDialog dialog = adb2.create(); 
    // set an OnShowListener 
    dialog.setOnShowListener(new DialogInterface.OnShowListener() { 
     @Override 
     public void onShow(DialogInterface dialog) { 
      spinnerKostenstellen.setOnItemSelectedListener(YOURCLASSNAME.this); 
     } 
    }); 
    dialog.show(); 
} 
+0

不會改變任何東西,它仍然選擇自動 – hevilp 2015-02-05 17:36:36

+0

謝謝,也加入了空白處。 – hevilp 2015-02-05 18:17:49

+0

我沒有改變任何東西,現在它不再工作。但我沒有在代碼:( – hevilp 2015-02-22 14:34:37