我有一个CardView包含一个微调。 微调器包含从0到5的数字供用户选择。 每个CardView本身都有一个与其相关的唯一ID。 例如说现在我有两张卡片,ID为1的卡片A和ID为2的卡片B.根据从微调器中选择的值,我将创建一个数组。 例如,卡片A的值为3,卡片B的值为2,则最终阵列将看起来像[1,1,1,2,2],并且如果卡片A的值的微调器更改为0,那么数组将被更新为[2,2]。 我现在可以为每张卡片创建分离的数组,但我不知道如何将数组添加到一起或根据每个spinners中的最终值更新数组
我现在拥有的:
@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]成为共享首选项。
I have a CardView containing a spinner. The spinner contains number from 0 to 5 for user to choose. Each CardView itself has a unique ID associated with it. For example say that now I have two cards, card A with ID of 1 and card B with ID of 2. Depending on the value selected from the spinner I will create an array. For example card A has value of 3 and card B has value of 2, the final array will then look like [1,1,1,2,2], and if the spinner of the value of card A is changed to 0, then the array will be updated to [2,2]. I can now create separated array for each cards, but I am not sure how to add the arrays together or update the arrays based on the final values in each spinners
What I have now:
@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 } }); }I can print out the separate arrays now e.g. [1,1,1], [2,2], but how should I update and combine them after spinner is selected? I tried putting them in a shared preference but this will only make the final array [2,2] the shared preference.
最满意答案
使列表定义最终并将其移到外部类。 所以删除这一行...
List<Integer> list = new ArrayList<Integer>();相反,在您的代码顶部,写...
final ChooseServiceList chooseServiceList1 = chooseServiceList.get(position); final List<Integer> list = new ArrayList<Integer>();Make the list definition final and move it to the outer class. So remove this line...
List<Integer> list = new ArrayList<Integer>();And instead, at the top of your code, write...
final ChooseServiceList chooseServiceList1 = chooseServiceList.get(position); final List<Integer> list = new ArrayList<Integer>();更多推荐
发布评论