Android Spinner使用ArrayList填充

时间:2014-12-18 17:05:47

标签: android spinner

我有一个微调器,下拉列表中有来自我的WebService的正确选项,但是当我选择一个选项时,它没有显示在Spinner字段中。

我的ArrayAdapter定义......

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>
                             (this, android.R.layout.simple_spinner_item,catTorneo);  

catTorneo有选项,它的定义为ArrayList

如果我使用List对象更改ArrayAdapter,则Spinner会正确无误。

 List<String> list = new ArrayList<String>();
                list.add("Android");
                list.add("Java");
                list.add("Spinner Data");
                list.add("Spinner Adapter");
                list.add("Spinner Example");

            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>
                             (this, android.R.layout.simple_spinner_item,list);    

catTorneo定义

ArrayList<String> catTorneo ;

在onTaskComplete方法中,我将catTorneo填充为..

try {
                ljsonArray = ljsonObject.getJSONArray(tag);
                for (int i = 0; i < ljsonArray.length(); i++) {
                    ljsonObject = ljsonArray.getJSONObject(i);                  
                    // Llena el spinner con el nombre de c/u de los nombres de torneos
                    String ls = ljsonObject.optString("tor_nombre");
                    catTorneo.add(ljsonObject.optString("tor_nombre"));

                }
            } catch (Exception e) {
                    Log.e("Error", e.getMessage());
                    e.printStackTrace();
                }

发生了什么?,为什么使用ArrayList对象不能正常工作并且List对象工作正常。

2 个答案:

答案 0 :(得分:1)

由于你的列表中充满了String,为什么不简单一点?

您可以使用此

Spinner mySpinner = (Spinner)findViewById(R.id.yourSpinner'sId);
String[] myItems = {"Android", "Java", "Spinner Data", "Spinner Adapter", "Spinner Example"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item_1, myItems);
mySpinner.setAdapter(adapter);

如果你有一个以上的字符串,那么你将不得不制作自己的适配器

答案 1 :(得分:0)

我猜您对ArrayList的更改尚未通知微调器。

我会做什么?

onTaskComplete方法

 ljsonArray = ljsonObject.getJSONArray(tag);
 for (int i = 0; i < ljsonArray.length(); i++) {
         ljsonObject = ljsonArray.getJSONObject(i);                  
         // Llena el spinner con el nombre de c/u de los nombres de torneos
         String ls = ljsonObject.optString("tor_nombre");            
         catTorneo.add(ljsonObject.optString("tor_nombre"));
 }
 //add this line
 dataAdapter.notifyDataSetChanged(); //tells the spinner that data has changed
 //put a toast here so that ull know when the data has be added to it :)