【问题标题】:Is it possible to store widgets in a list/array?是否可以将小部件存储在列表/数组中?
【发布时间】:2012-07-07 11:06:15
【问题描述】:

所有 - 我有大量的 Spinner,我想将它们存储在一个列表/数组中,这样我就不必重写大量代码。我有大约 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)

我什至不知道这是否可能,但我想问否则这将是一个漫长的夜晚编写重复代码:)。感谢您的宝贵时间!

【问题讨论】:

    标签: java android arrays list


    【解决方案1】:

    将 ID 存储在数组中,如 ints。然后循环它们来设置适配器。

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

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

    【讨论】:

    • 我试试看,请稍等。
    • 奇怪,我得到了第一个微调器,但没有任何后续,有什么想法吗?同时我会再试一次。
    • 没关系。我明白了,感谢十亿的帮助!把我从一项沉闷的任务中拯救出来!
    • 很高兴您知道了——我需要在上面的代码中编辑任何内容以反映更改吗?
    猜你喜欢
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 2020-08-06
    • 2012-09-27
    • 1970-01-01
    相关资源
    最近更新 更多