将从 Spinner 中获取的多个值添加到 CardView 中
Add multiple value obtained from spinner in CardView together
我有一个包含微调器的 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] 成为共享首选项。
使列表定义最终化并将其移动到外部class。所以删除这一行...
List<Integer> list = new ArrayList<Integer>();
相反,在代码的顶部,写...
final ChooseServiceList chooseServiceList1 = chooseServiceList.get(position);
final List<Integer> list = new ArrayList<Integer>();
我有一个包含微调器的 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] 成为共享首选项。
使列表定义最终化并将其移动到外部class。所以删除这一行...
List<Integer> list = new ArrayList<Integer>();
相反,在代码的顶部,写...
final ChooseServiceList chooseServiceList1 = chooseServiceList.get(position);
final List<Integer> list = new ArrayList<Integer>();