【发布时间】:2010-03-24 03:45:03
【问题描述】:
我有一个 EditText 、一个 button 和一个 spinner 。单击按钮 时,微调器将添加一个新项目,名称为您在 EditText 中输入的名称。但问题是,我的 adapter.add() 方法似乎不起作用……这是我的代码:
public class Spr extends Activity {
Button bt1;
EditText et;
ArrayAdapter<CharSequence> adapter;
Spinner spinner;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bt1 = (Button)this.findViewById(R.id.bt1);
et = (EditText)this.findViewById(R.id.et);
spinner = (Spinner)this.findViewById(R.id.spr);
adapter = ArrayAdapter.createFromResource(
this, R.array.planets_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String temp = et.getText().toString();
adapter.add(temp);
adapter.notifyDataSetChanged();
spinner.setAdapter(adapter);
}
});
spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
Toast.makeText(parent.getContext(), "The planet is " +
parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}});
}
}
谢谢! ...还在等待中
【问题讨论】:
-
您绝对不需要在 View.OnClickListener 中再次调用 spinner.setAdapter()。不过,您的代码看起来应该可以工作。
-
您也无需致电
notifyDataSetChanged()。只需adapter.add()就足够了。当您说“不起作用”时,您是什么意思? -
我找到了答案,有人告诉我,再次调用 notifyDataSetChanged() 和 setAdapter() 可能会有帮助。所以我添加了它,但它仍然不起作用......当我运行它时,然后单击按钮。它会跳出一个错误:应用程序已意外停止。请重试...(我认为问题出在方法 spinner.add()。)谢谢您的帮助!
-
如果您可以向我们展示 logcat 在您的应用程序崩溃时显示的异常,这将有所帮助。
-
没有出现异常。我尝试:将项目放入 ArrayList al 中,然后 adapter = new ArrayAdapter
(... , ... , al ) ... 然后它有效...我的问题是:它们之间有什么区别(我的意思是 ArrayAdapter.createFromResource() 方法和新的 ArrayAdapter ())?我很抱歉我的英语很差,我希望你能明白我在说什么......非常感谢
标签: android add adapter android-arrayadapter