Android Spinner 将不会启动 OnItemSelected,并且当前选定的项目不会显示在 Spinner 中

Android Spinner will not launch OnItemSelected and current selected item is not displayed in Spinner

这是应用程序的一个简单 gif 动图来说明我的意思:Video Gif here

我有一个 Spinner,这是我的 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.
    }

}

不知道哪里出了问题,尝试了许多不同的教程和方法来创建相同的东西。没有任何效果,也许我错过了一些我不确定的简单事情!如果有人能提供帮助那就太好了:)

终于发现了这个对我有帮助的东西,我将 InitialSetupUI 函数更改为:

public void uniSpinnerSetup()
{
    ParseQueryAdapter.QueryFactory<ParseObject> factory = new ParseQueryAdapter.QueryFactory<ParseObject>() {
        public ParseQuery create() {
            ParseQuery query = new ParseQuery("University");
            return query;
        }
    };

    uniSpinner = (Spinner) findViewById(R.id.uniSpinner);

    ParseQueryAdapter<ParseObject> adapter = new ParseQueryAdapter<ParseObject>(this, factory);
    adapter.setTextKey("name");
    uniSpinner.setAdapter(adapter);
    uniSpinner.setSelection(1);
    uniSpinner.setOnItemSelectedListener(new mySpinnerListener());
}

不要问我它是如何工作的,哈哈,但确实如此……现在我需要弄清楚如何得到这些值 O.o