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. 
    } 

} 

不知道什么是错的,已经尝试了许多不同的教程和创建相同事物的方法。没有任何工作,也许我错过了一些简单的我不确定!如果有人能够帮助这将是巨大的:)

+0

为什么你为名为'uniSpinner'和'spinner1'的同一个Spinner创建两个引用?我试过你的代码对我来说工作得很好。 – 2015-04-05 02:21:24

+0

我注意到在你的done()方法中,你不会在适配器上调用notifyDataSetChanged()。当ListView未与使用notifyDataSetChanged()的适配器同步时,我看到奇怪的事情发生。我会尝试重写代码,以便可以使用done()回调方法访问适配器,并可以在done()方法结束时调用notifyDataSetChanged()。 – 2015-04-05 04:07:35

+0

@UsmanAliButt这是因为我测试了一些其他代码并忘记删除以前的参考。我可以问你用什么模拟器来测试它吗?可能是可能的原因 – dominicE 2015-04-05 06:43:12

回答

1

跨越这这让我终于来了,我改变了我的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()); 
} 

不要问我它是如何工作笑,但它确实...现在我需要弄清楚如何获取这些值Oo

相关问题