【问题标题】:Android Spinner populate using ArrayListAndroid Spinner 使用 ArrayList 填充
【发布时间】:2014-12-19 01:37:22
【问题描述】:

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

我的 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 对象不能正常工作。

【问题讨论】:

  • 显示catTorneo的声明和定义
  • 好的,声明和定义

标签: android spinner


【解决方案1】:

既然你的列表都是字符串,为什么不让事情变得更简单呢?

你可以用这个

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);

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

【讨论】:

    【解决方案2】:

    我猜您对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 :)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 2015-03-23
      相关资源
      最近更新 更多