用数组声明微调器的简单方法
a simple way to declare a spinner with array
我想在 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);
}
正确的做法是什么?
编辑
我的问题是用数组声明微调器。在我的实验中,我想用数组声明一个微调器来制作多个微调器,这样我就可以在选择第一个微调器时用它来创建一个新的微调器。
这应该可行。我使用过 TextView 数组。我没有使用微调器。
但是你的微调器数组应该有一个大小。
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);
这就是您可能想要向UI添加微调器的方式。
像这样将适配器添加到微调器
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
}
});
根据我对您的需求的理解,我做了以下编码,请检查一下,希望对您有所帮助。
首先在您的 Activity
中实现 Listner
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>
现在在你的主activity声明你的布局如下
LinearLayout mainSpinnerLayout = (LinearLayout) findViewById(R.id.llSpinnerSection);
现在创建一个获取数据的方法并设置 Spinner
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
}
希望这对你有用
我想在 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);
}
正确的做法是什么?
编辑
我的问题是用数组声明微调器。在我的实验中,我想用数组声明一个微调器来制作多个微调器,这样我就可以在选择第一个微调器时用它来创建一个新的微调器。
这应该可行。我使用过 TextView 数组。我没有使用微调器。 但是你的微调器数组应该有一个大小。
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);
这就是您可能想要向UI添加微调器的方式。
像这样将适配器添加到微调器
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
}
});
根据我对您的需求的理解,我做了以下编码,请检查一下,希望对您有所帮助。
首先在您的 Activity
中实现 Listner 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>
现在在你的主activity声明你的布局如下
LinearLayout mainSpinnerLayout = (LinearLayout) findViewById(R.id.llSpinnerSection);
现在创建一个获取数据的方法并设置 Spinner
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
}
希望这对你有用