0
这里是行动应用程序的一个简单的gif来说明我的意思:Video Gif hereAndroid的微调不会推出OnItemSelected和当前选择的项目是不是在微调显示
我有一个微调,这里是我的XML代码它:
<Spinner
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/uniSpinner"
android:layout_weight="1.5"
android:spinnerMode="dialog"
android:prompt="@string/type_default"/>
我跟随了几个教程,并在这里浏览了使用parse.com动态添加内容到微调框。内容已成功添加,但OnItemSelected在选择列表中的项目时不会触发,所选项目也不会显示在微调器中。
以上代码的OnCreate:
Spinner uniSpinner;
List<String> uniList;
代码在OnCreate中:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the view from main.xml
setContentView(R.layout.activity_register);
uniSpinner = (Spinner) findViewById(R.id.uniSpinner);
uniList = new ArrayList<String>();
addItemsToSpinner();
InitialSetUpUI();
代码来创建微调:
public void addItemsToSpinner()
{
ParseQuery<ParseObject> query = ParseQuery.getQuery("University");
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects, ParseException e) {
if (e == null)
{
for(ParseObject university : objects){
uniList.add(university.getString("name"));
}
}
else
{
}
}
});
}
public void InitialSetUpUI()
{
Spinner spinner1 = (Spinner) findViewById(R.id.uniSpinner);
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item,uniList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter);
spinner1.setOnItemSelectedListener(new mySpinnerListener());
}
class mySpinnerListener implements Spinner.OnItemSelectedListener
{
@Override
public void onItemSelected(AdapterView parent, View v, int position,long id) {
// TODO Auto-generated method stub
Toast.makeText(parent.getContext(), "test: " +
parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView parent) {
// TODO Auto-generated method stub
// Do nothing.
}
}
不知道什么是错的,已经尝试了许多不同的教程和创建相同事物的方法。没有任何工作,也许我错过了一些简单的我不确定!如果有人能够帮助这将是巨大的:)
为什么你为名为'uniSpinner'和'spinner1'的同一个Spinner创建两个引用?我试过你的代码对我来说工作得很好。 – 2015-04-05 02:21:24
我注意到在你的done()方法中,你不会在适配器上调用notifyDataSetChanged()。当ListView未与使用notifyDataSetChanged()的适配器同步时,我看到奇怪的事情发生。我会尝试重写代码,以便可以使用done()回调方法访问适配器,并可以在done()方法结束时调用notifyDataSetChanged()。 – 2015-04-05 04:07:35
@UsmanAliButt这是因为我测试了一些其他代码并忘记删除以前的参考。我可以问你用什么模拟器来测试它吗?可能是可能的原因 – dominicE 2015-04-05 06:43:12