2016-09-29 79 views
0

我想在android上做一些動態的添加Spinner。當第一個Spinner被選中時,第二個微調將出現。我想以編程方式創建所有Spinner用數組聲明一個微調器的簡單方法

這是我迄今爲止所做的。

public class MainActivity extends Activity { 

    Spinner spnKolom[]; // I declare an array of Spinner 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

所以我試着創建這樣的紗錠。

final DataHelper db = new DataHelper(getApplicationContext()); 
final List<String> labelKolom = db.getKolom(); 

for (int itung=0;itung<labelKolom.size();itung++){ 
    spnKolom[itung] = new Spinner(this); 
} 

什麼是正確的方法來做到這一點?

編輯

我的問題是有關聲明與陣列的好手。在我的例子中,我想用一個數組來聲明一個Spinner來創建多個Spinner,因此當我選擇First spinner時,我可以用它創建一個New Spinner。

+0

你的紡紗總人數是否是固定的?意味着您想要動態創建多少個旋轉器? – Vickyexpert

+0

與http:// stackoverflow類似。com/a/39405348/2826147 –

+0

@Vickyexpert總旋轉器跟在我的數據庫中的列數。所以紡紗廠的數量不固定。 –

回答

1

按我的客戶要求我在下面做編碼的瞭解,所以請檢查它,希望它會幫助你。

首先在你的活動實施聽者

public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener 

現在你的XML文件應該如下面

activity_main.xml中

<LinearLayout 
     android:id="@+id/main_Layout" 
     android:background="#FF0000" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <ScrollView 
      android:id="@+id/scMainView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 

      <LinearLayout 
       android:id="@+id/llSpinnerSection" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" > 
      </LinearLayout> 
     </ScrollView> 
    </LinearLayout> 

現在在主AC tivity聲明佈局如下

LinearLayout mainSpinnerLayout = (LinearLayout) findViewById(R.id.llSpinnerSection); 

立即創建一個方法獲取數據,並設置微調

public void createSpinners() 
    { 

     final DataHelper db = new DataHelper(getApplicationContext()); 
     final List<String> labelKolom = db.getKolom(); 

     spnKolom = new Spinner[labelKolom.size()]; 

     for (int itung=0;itung<labelKolom.size();itung++) 
     { 
      spnKolom[itung] = new Spinner(this); 
      spnKolom[itung].setTag(itung); 

      ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, labelKolom); 
      spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spnKolom[itung].setAdapter(spinnerArrayAdapter); 
      spnKolom[itung].setOnItemSelectedListener(this); 

      if(itung == 0) 
      { 
      spnKolom[itung].setVisibility(View.VISIBLE); 
      } 
      else 
      { 
      spnKolom[itung].setVisibility(View.GONE); 
      } 

      mainSpinnerLayout.addView(spnKolom[itung]); 
    } 
} 

終於實現方法對於微調器,以顯示對項目選擇下一步微調

//Performing action onItemSelected and onNothing selected 
@Override 
public void onItemSelected(AdapterView<?> arg0, View arg1, int position,long id) { 

    if(position < spnKolom.length - 1) 
    { 
     spnKolom[position + 1].setVisibility(View.VISIBLE); 
    } 

} 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub 
} 

何PE這將爲你工作

+0

是的,那正是我想要的。 :D –

+0

享受您的編碼... – Vickyexpert

0

這應該可能奏效。我曾與TextView數組一起工作。我沒有使用過Spinner。 但是你的微調器陣列應該有一個大小。

ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinnerArray); //selected item will look like a spinner set from XML 
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner.setAdapter(spinnerArrayAdapter); 

你這是怎麼可能希望將微調添加到用戶界面。

1

添加適配器微調器像

Spinner spinner = new Spinner(this); 
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinnerArray); //selected item will look like a spinner set from XML 
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner.setAdapter(spinnerArrayAdapter); 

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
     // Visible the second spinner and set it data on the basis of selection 
     showDataOfSecondSpinnerOnBasisOfSelection(spinnerArray[position]); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parentView) { 
     // your code here 
    } 

}); 
相關問題