2012-05-02 236 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'時才能支持添加功能。 –