2017-01-09 47 views
3
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.item_listview); 

    myspinner = (Spinner)findViewById(R.id.spinnertype); 
    String provider = myspinner.getSelectedItem().toString(); 

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, type_arrays,R.layout.support_simple_spinner_dropdown_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    myspinner.setAdapter(adapter); 

    myspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
      Toast.makeText(parent.getContext(), "OnItemSelectedListener :" + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
     } 
    }); 

} 
} 

我尝试不同种类的面包,但它仍然不会出现。什么地方出了错? 我看到一些帖子,它说我不能使用onclicklistener的微调为什么我的烤面包不起作用?

+2

'parent.getContext()'不应该是'Activity'的''context''吗?例如,我的'活动'名称是'MainActivity',所以使用**:'MainActivity.this'这应该是''活动'的'上下文'。但是我想如果你使用自己的代码(' parent.getContext()')在另一个活动中,它不会显示,因为它在别的地方其实你知道.. – Mohsen

+0

@Mohsen,我有一个列表视图右下方的微调。是否覆盖了吐司或它的只是因为我使用parent.getContext? – Sarah

+0

那么,正如我看到你的代码,只是尝试使用当前的'活动'上下文,而不是'parent.getContext()'。然后,如果你看不到“吐司”,你必须调试代码。另外,您是否可以尝试使用简单的TOAST而无需获取适配器项目?只是:'Toast.makeText(MainActivity.this,“OnItemSelectedListener:”,Toast.LENGTH_SHORT).show();'然后让我知道你是否可以看到烤面包? – Mohsen

回答

1

好的,让我们再次检查代码;

就像我说的,你需要使用当前的ActivityContext

例如,我的Activity名字,MainActivity所以,用途: MainActivity.this这应该是Activity的情况下。但是,如果你使用自己的代码(parent.getContext())我 觉得里面的另一 活动,它不会显示出来,因为它是在其他地方其实你 知道

而且,你做错了什么在这里我想(有什么similiar:ArrayAdapter.createFromResource issue

我只是引述了答案:

查询数据,把它放在一个列表阵列和使用此构造的 ArrayAdapter

ArrayAdapter<CharSequence> dataAdapter1 = new ArrayAdapter(this, 
            android.R.layout.simple_spinner_item, yourArrayOrList); 

更新:所以在这里是:

Spinner myspinner = (Spinner)findViewById(R.id.spinnertype); 
     String provider = myspinner.getSelectedItem().toString(); 

     ArrayAdapter<CharSequence> adapter = 
       new ArrayAdapter<CharSequence>(this, type_arrays, R.layout.support_simple_spinner_dropdown_item); 
       /*ArrayAdapter.createFromResource(this, type_arrays,R.layout.support_simple_spinner_dropdown_item);*/ 

     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     myspinner.setAdapter(adapter); 

     myspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
       Toast.makeText(MainActivity.this, "OnItemSelectedListener :" + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show(); 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> adapterView) { 

      } 
     }); 

现在它应该工作!

+0

OHHH MY!这是我的错误。我实际上创建了一个新的Java类。我试图把代码放在我的主要java列表中,它工作正常!谢谢 – Sarah

+0

好!很高兴听到这一点。此外,您最好接受未来可能有同样问题的人的答案。 – Mohsen

3

有YOUT试试这个,可以帮助你

Toast.makeText(getApplicationContext(), "OnItemSelectedListener :" + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show(); 

Toast.makeText(YourActivity.this, "OnItemSelectedListener :" + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show(); 
+0

抱歉,他们都没有工作。我会试图找出 – Sarah

+0

它的工作!对于之前的评论感到抱歉。它实际上取决于我放置代码的位置。谢谢! – Sarah

2

尝试使用的getContext()代替getApplicationContext。

+0

它的工作,谢谢你 – Sarah