是否可以将小部件存储在列表/数组中?

时间:2012-07-07 01:21:04

标签: java android arrays list

全部 - 我有大量的Spinners,我想存储在列表/数组中,这样我就不必重写大量的代码了。我有大约30个旋转器,它们通过相同的代码。我试图找出一种方法将30个微调器放在一个数组列表中,然后通过我的代码运行数组/列表。例如:

Spinner spinner1 = (Spinner) findViewById(R.id.spinner);
Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);
List<String> listOfSpinners= new ArrayList(); // This is the part I am not sure about                       
    listOfSpinners.add(spinner1);
    listOfSpinners.add(spinner2); 


    ArrayAdapter<String> adapterSpinner = new ArrayAdapter<String>(this,
                R.layout.spinnerlayout, infoInSpinner);


    adapterSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);  
    listOfSpinners.setAdapter(adapterSpinner); //I want to use the list here (listOfSpinners)

我甚至不知道这是否可行,但我要求否则这将是一个漫长的夜晚写重复代码:)。谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

将ID存储在数组中,如int s。然后遍历它们以设置适配器。

ArrayList<Integer> listOfSpinners = new ArrayList<Integer>();
listOfSpinners.add(R.id.spinner);
listOfSpinners.add(R.id.spinner2); 

ArrayAdapter<String> adapterSpinner = new ArrayAdapter<String>(this,
            R.layout.spinnerlayout, infoInSpinner);

adapterSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
for (Integer spinner : listOfSpinners) {
    // If you want multiple adapters, move the adapter code in here and alter it accordingly.
    ((Spinner) findViewById(spinner)).setAdapter(adapterSpinner);
}

我没有测试过这段代码,但它应该可以正常工作!请记住,这会将所有Spinner设置为具有相同的适配器。