2012-05-02 230 views
0

我正在开发一个应用程序,并需要一些帮助微调控件。 该数组的创建没有条目,并将填充到另一个函数中。所以我想用adapter.add(item);spinner.setAdapter(adapter);更新这个函数中的微调器。Android微调项目添加项目

// global variables 
    String[] test = new String[100]; 
    int x = 0; 
    Spinner s; 
    ArrayAdapter adapter; 
    Button btn1; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     btn1 = (Button) findViewById(R.id.button1); 
     btn1.setOnClickListener(this); 
     s = (Spinner) findViewById(R.id.spinner1); 
     adapter = new ArrayAdapter(this, 
     android.R.layout.simple_spinner_item, test); 
    } 

    public void onClick(View arg0) { 
     test[x] = String.valueOf(x);; 
     x++; 
     adapter.add(test[x]); 
     s.setAdapter(adapter); 
    } 

只是为了教育目的,我想这一点,但仍有在onclick()函数中的错误。 我想,必须用ArrayAdapter来完成。但我不熟悉这一点,没有找到一个通过按下按钮添加它的例子。 也许在别的地方只有一个简单的失败,但目前我只是没有看到它。

这里的完整代码:

ArrayList<Integer> test; 
    int x = 0; 
    Spinner s; 
    ArrayAdapter adapter; 
    Button btn1; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     btn1 = (Button) findViewById(R.id.button1); 
     btn1.setOnClickListener(this); 
     s = (Spinner) findViewById(R.id.spinner1); 
     test = new ArrayList<Integer>(); 
     adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, test); 
    } 

    public void onClick(View arg0) { 
     test.add(x); 
     x++; 
     s.setAdapter(adapter); 
    } 

回答

0

您将x添加到数组元素,然后将此元素传递给adapter.add方法。这与使用adapter.add(x);实际上是一样的。为什么不使用ArrayList而不是数组呢? ArrayLists是动态的,不需要赋予初始大小。 一个非常快速的检查显示我有一个与ArrayLists兼容的Array Adapter的构造函数,我期望List类的任何后代。请参阅下面的代码示例。

ArrayList<Integer> test = new ArrayList<Integer>(); 

ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, test); 

我知道这不是一个完整的解决方案,而只是指向可能更好的方法。

使用术语'android updating arrayAdapter at runtime'进行网络搜索,我相信你会偶然发现一个更具体的例子。

+0

非常感谢,解决了问题。 之前从未使用ArrayList,实际上它似乎是我作为一个普通数组的非常舒适的替代品。 – Silu

0

问题是你要设置的ArrayAdapter的数据是100个空字符串,然后加入到了结束的时候,你按按钮。尝试将您的test变量更改为new String[0]

然后在您的onClick方法中,只需拨打adapter.add(String)即可。它会将它添加到当前数据的末尾,所以您最初不需要给它一个足够大的数组。

+0

好的,这是有道理的。但它不会工作(我试过),只需将数组更改为'new String [0]'并调整'onClick'函数。 仍然存在UnsupportetOperationException。 无论如何不重要安德鲁S找到了更好的解决方案(谢谢)。 但是,谢谢你的帮助。 – Silu

+0

啊,只有在使用'List'时才能支持添加功能。 –