我已经考虑了很长时间,但真的不知道问题出在哪里。第一段代码在我的一项活动中起作用。selectedUser是全局解密的,我可以在任何地方使用它。
spUsers.setAdapter(new MyAdapter(this, R.layout.user_sp_row,userArray));
spUsers.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
int index = spUsers.getSelectedItemPosition();
selectedUser = userList.get(index).get(Constants.TAG_UNAME);
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
selectedUser = "";
}
});
尽管这段代码看起来和我写的其他代码一样,但它并不能正常工作。selectedCat也是全局声明的。问题是,值是在onItemSelected方法中设置的,但一旦它离开方法selectedCat就是一个空字符串。
spCat.setAdapter(new MyAdapter(this, R.layout.category_sp_row,tempArray));
spCat.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
int index = spCat.getSelectedItemPosition();
selectedCat = categoryList.get(index).get(Constants.TAG_UPID);
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
selectedCat = "";
}
});
当你可以使用onItemSelected()
方法中提供的位置整数时,我不知道为什么要使用int index = spUsers.getSelectedItemPosition();
来获取索引。
我确实通过在setOnItemSelectedListener()中完成所有需要完成的操作来实现这一点。
Ty DrkStr