我正在开发一个应用程序,需要一些关于微调器小部件的帮助。
该数组在创建时没有条目,将填充另一个函数。因此,我想我必须使用adapter.add(item);
和spinner.setAdapter(adapter);
来更新此函数中的微调器。
// 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来完成。但我不熟悉这一点,并没有找到按下按钮添加itmes的示例。 也许在其他地方只有一个简单的失败,但目前我只是没有看到它。
这里是完整的代码:
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 :(得分:0)
问题是您将ArrayAdapter
的数据设置为100个空字符串,然后在按下按钮时添加到该结尾。尝试将test
变量更改为new String[0]
。
然后在onClick
方法中,只需拨打adapter.add(String)
即可。它会将它添加到当前数据的末尾,因此您最初不需要为它提供足够大的数组。
答案 1 :(得分:0)
您正在将x添加到数组元素,然后将此元素传递给adapter.add方法。这实际上与使用:adapter.add(x);。
相同为什么不使用ArrayList而不是数组。 ArrayLists是动态的,不需要给出初始大小。 一个非常快速的检查表明我有一个与ArrayLists兼容的数组适配器的构造函数,我期望List类的任何后代。请参阅下面的代码示例。
ArrayList<Integer> test = new ArrayList<Integer>();
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, test);
我知道这不是解决问题的完整解决方案,而只是指向可能更好的方法。
在运行时使用术语'android updates arrayAdapter'进行网络搜索,我相信你会偶然发现一个更具体的例子。