在CardView中一起添加从微调器获得的多个值

时间:2017-02-09 05:24:17

标签: android arrays android-spinner android-cardview

我有一个包含微调器的CardView。微调器包含0到5之间的数字供用户选择。每个CardView本身都有一个与之关联的唯一ID。比如说现在我有两张卡,ID为1的卡A和ID为2的卡B.根据从微调器中选择的值,我将创建一个数组。例如,卡A的值为3,卡B的值为2,最终的数组将看起来像[1,1,1,2,2],如果卡A的值的微调器变为0,那么数组将更新为[2,2]。 我现在可以为每张卡创建单独的数组,但我不确定如何将数组添加到一起或根据每个微调器中的最终值更新数组

我现在拥有的:

    @Override
public void onBindViewHolder(ViewHolder holder, final int position) {

    final ChooseServiceList chooseServiceList1 =  chooseServiceList.get(position);

    // Spinner Drop down elements
    List<Integer> categories = new ArrayList<Integer>();
    categories.add(0);
    categories.add(1);
    categories.add(2);
    categories.add(3);
    categories.add(4);
    categories.add(5);

    ArrayAdapter<Integer> dataAdapter = new ArrayAdapter<Integer>(context, android.R.layout.simple_spinner_item, categories);
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    holder.spinnerServiceNum.setAdapter(dataAdapter);

    holder.spinnerServiceNum.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            String item = adapterView.getItemAtPosition(i).toString();
            Integer serviceCount = Integer.parseInt(item);//spinner value
            Integer serviceId = chooseServiceList1.getServiceId();//ID associated with card
            List<Integer> list = new ArrayList<Integer>();
            for(int service = 1; service<=serviceCount; service++) {
                list.add(serviceId);
                if(service == serviceCount){
                    //final numbers of each ID that should be add into array
                }
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
            //do nothing
        }
    });
}

我现在可以打印出单独的数组,例如[1,1,1],[2,2],但是如何在选择微调器之后更新并组合它们?我尝试将它们放在共享首选项中,但这只会使最终数组[2,2]成为共享首选项。

1 个答案:

答案 0 :(得分:0)

使列表定义最终并将其移动到外部类。所以删除这一行...

List<Integer> list = new ArrayList<Integer>();

而是在代码的顶部写上......

final ChooseServiceList chooseServiceList1 =  chooseServiceList.get(position);
final List<Integer> list = new ArrayList<Integer>();