如何在 Android 中动态更新 Spinner 中的数据?
How to update data in Spinner Dynamically in Android?
我已将我的数据添加到 array.xml 文件中,并将 link 添加到
<string-array name="state">
<item>ANDAMAN NICOBAR ISLANDS</item>
<item>ANDHRA PRADESH</item>
<item>ARUNACHAL PRADESH</item>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/drpstate"
android:entries="@array/state"/>
我想动态更改此条目
提前致谢..
您可以在 Java 代码中实现,如下所示:
List<String> categories = new ArrayList<String>();
categories.add("Automobile");
categories.add("Business Services");
categories.add("Computers");
categories.add("Education");
categories.add("Personal");
categories.add("Travel");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
spinner.setAdapter(dataAdapter);
来源:http://www.tutorialspoint.com/android/android_spinner_control.htm
您可以使用 BaseAdapter 的任何子类来执行此操作。假设您要从使用 SimpleCursorAdapter 的数据库加载数据。
String[] from = new String[]{"nameOfColumn"}; //nameOfColumn is the name of the column in cursor to display in the spinner.
int[] to = new int[]{android.R.id.text1};
SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter (this, android.R.layout.simple_spinner_item, null, from, to, 0);
cursorAdapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item);
binding.paymentChannelSpinner.setAdapter (cursorAdapter);
binding.paymentChannelSpinner.setOnItemSelectedListener (new AdapterView.OnItemSelectedListener () {
@Override
public void onItemSelected (AdapterView<?> adapterView, View view, int i, long l) {
if (i != -1) {
Cursor c = (Cursor) adapterView.getItemAtPosition (i);
}
}
@Override
public void onNothingSelected (AdapterView<?> adapterView) {
}
});
从数据库中获取数据作为游标后,您将像这样将游标设置到适配器:
cursorAdapter.changeCursor(cursorFromDB);
但是,如果数据在 java 数组中,您可以使用 Arrayadapter
使用 adapter.add() 添加数据,然后调用 adapter.notifyDataSetChanged() 应用更改。
Spinner spinner = (Spinner)findViewById(R.id.mySpinner);
List<String> list = Arrays.asList(getResources().getStringArray(R.array.state));
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerAdapter);
spinnerAdapter.add("DELHI");
spinnerAdapter.notifyDataSetChanged();
我已将我的数据添加到 array.xml 文件中,并将 link 添加到
<string-array name="state">
<item>ANDAMAN NICOBAR ISLANDS</item>
<item>ANDHRA PRADESH</item>
<item>ARUNACHAL PRADESH</item>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/drpstate"
android:entries="@array/state"/>
我想动态更改此条目
提前致谢..
您可以在 Java 代码中实现,如下所示:
List<String> categories = new ArrayList<String>();
categories.add("Automobile");
categories.add("Business Services");
categories.add("Computers");
categories.add("Education");
categories.add("Personal");
categories.add("Travel");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
spinner.setAdapter(dataAdapter);
来源:http://www.tutorialspoint.com/android/android_spinner_control.htm
您可以使用 BaseAdapter 的任何子类来执行此操作。假设您要从使用 SimpleCursorAdapter 的数据库加载数据。
String[] from = new String[]{"nameOfColumn"}; //nameOfColumn is the name of the column in cursor to display in the spinner.
int[] to = new int[]{android.R.id.text1};
SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter (this, android.R.layout.simple_spinner_item, null, from, to, 0);
cursorAdapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item);
binding.paymentChannelSpinner.setAdapter (cursorAdapter);
binding.paymentChannelSpinner.setOnItemSelectedListener (new AdapterView.OnItemSelectedListener () {
@Override
public void onItemSelected (AdapterView<?> adapterView, View view, int i, long l) {
if (i != -1) {
Cursor c = (Cursor) adapterView.getItemAtPosition (i);
}
}
@Override
public void onNothingSelected (AdapterView<?> adapterView) {
}
});
从数据库中获取数据作为游标后,您将像这样将游标设置到适配器:
cursorAdapter.changeCursor(cursorFromDB);
但是,如果数据在 java 数组中,您可以使用 Arrayadapter
使用 adapter.add() 添加数据,然后调用 adapter.notifyDataSetChanged() 应用更改。
Spinner spinner = (Spinner)findViewById(R.id.mySpinner);
List<String> list = Arrays.asList(getResources().getStringArray(R.array.state));
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerAdapter);
spinnerAdapter.add("DELHI");
spinnerAdapter.notifyDataSetChanged();