我有一个在微调器适配器中填充的数组。 现在我想改变阵列的大小!可能吗? 救命! 感谢你 `public void classpopulate(){ if(PEP.getUser()== null){ 返回; }
classdetails = masterDataManager.getClassSections(PEP.getUser()
.getUsername(), getApplicationContext());
spnrClass = (Spinner) findViewById(R.id.spnrClass);
spnrSubject = (Spinner) findViewById(R.id.spnrSubject);
classname = new String[classdetails.size() + 1];
classname[0] = "SELECET CLASS";
for (int i = 1; i < classdetails.size() + 1; i++) {
classname[i] = classdetails.get(i - 1).getClass_name() + " "
+ classdetails.get(i - 1).getSection_name().toString();
}
ArrayAdapter<CharSequence> adapterClasses = new ArrayAdapter<CharSequence>(
getApplicationContext(), R.layout.spinner_item_class,
R.id.spinnerclasstxt, classname);
spnrClass.setAdapter(adapterClasses);
spnrClass.setSelection(0);
spnrClass
.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int pos, long arg3) {
// LinearLayout layoutSpinnersubj = (LinearLayout)
// findViewById(R.id.layout_spinner);
// RelativeLayout subject_Text
// =(RelativeLayout)findViewById(R.id.layoutsubjecttext);
int selectedindex = pos;
if (selectedindex == 0) {
spnrSubject.setVisibility(View.INVISIBLE);
} else {
spnrSubject.setVisibility(View.VISIBLE);
selectedClass = classdetails.get(selectedindex - 1);
subjectpopulate(selectedClass);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
`
答案 0 :(得分:0)
您可以使用ArrayAdapter
方法clear
,add
,insert
和/或remove
来操作适配器的数据。
编辑:从您的评论中,听起来您最终需要编写自己的自定义适配器(可能通过扩展BaseAdapter
),特别是如果您想要禁用(分隔符)行等。将更多地控制显示的内容和外观。在网上搜索“android custom list adapter”,找到很多如何编写一个的示例。这不是太难。
尽管如此,如果你想继续使用ArrayAdapter
,这里有一个删除列表第一个元素的例子(假设适配器已保存在成员字段adapter
中): / p>
adapter.remove(adapter.getItem(0));
对于更复杂的更改(例如加载完全不同的数据集),您可能会执行以下操作:
String[] newData = . . .
adapter.setNotifyOnChange(false); // temporarily turn off auto-notification
adapter.clear();
adapter.addAll(newData);
adapter.notifyDataSetChanged(); // notifies and turns auto-notifications back on
最好按顺序进行多项更改时暂停自动通知。
答案 1 :(得分:0)
我希望这会对你有所帮助。
在您的活动中,从布局文件中获取引用,例如
Spinner spinner = (Spinner)findViewById(R.id.spinner);
然后,为那个
制作适配器ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,YOUR_STRING_ARRAY);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
然后创建一个 arrays.xml 它包含你的字符串数组。
例如,
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="string_array">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
</string-array>
</resources>
答案 2 :(得分:0)
您可以使用ArrayList代替数组
ArrayList<String> classname = new ArrayList<String>;
classname.add("SELECET CLASS");
for (int i = 1; i < classdetails.size() + 1; i++) {
classname[i].add(classdetails.get(i - 1).getClass_name() + " "
+ classdetails.get(i - 1).getSection_name().toString());
}
ArrayAdapter<CharSequence> adapterClasses = new ArrayAdapter<CharSequence>(
getApplicationContext(), R.layout.spinner_item_class,
R.id.spinnerclasstxt, classname);
spnrClass.setAdapter(adapterClasses);
spnrClass.setSelection(0);