2016-09-29 63 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 
    } 

});