一种使用数组声明微调器的简单方法

时间:2016-09-29 04:37:21

标签: java android arrays spinner android-spinner

我想在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);
    }
}

所以我尝试像这样创建Spinners。

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来创建很多微调器,所以我可以在选择第一个微调器时使用它来创建一个新的微调器。

3 个答案:

答案 0 :(得分:1)

将适配器添加到微调器,如

<footer>
  <img src=http://www.placebacon.net/200/150>
</footer>

答案 1 :(得分: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>

现在,您的主要活动会将您的布局声明如下

   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]);
     }
}

最后实施Spinner的方法以在项目选择上显示下一个微调器

//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
}

希望这对您有用

答案 2 :(得分:0)

这应该可行。我使用过TextView数组。我没有用过Spinner。 但是你的微调器数组应该有一个大小。

.PositiveInfinity

这就是可能想要将微调器添加到UI的方式。