You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Spinner技术问询:整数值赋值/转换及是否需用ArrayAdapter

问题解答

一、获取Spinner选中值并转换为整数用于计算

你可以通过两种方式获取Spinner的选中分值,核心是给每个Spinner设置选中监听器,在用户选择时记录分值:

方法1:通过选中的字符串转换为整数

因为你的string-array中每个item的内容就是数字字符串,直接获取后转成int即可:

// 以第一个Spinner为例,先获取实例
Spinner spinner1 = findViewById(R.id.spinner1);

spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // 获取选中的字符串并转为整数
        String selectedStr = parent.getItemAtPosition(position).toString();
        int score = Integer.parseInt(selectedStr);
        // 将score存入全局变量(比如一个int数组scores[8]),用于后续计算总分
        scores[0] = score;
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // 可选:处理未选中的情况,比如默认赋值1分
        scores[0] = 1;
    }
});

方法2:通过选中位置直接计算分值

由于你的rating数组是按1到5的顺序排列的,选中位置position(从0开始)加1正好对应分值,这种方式无需字符串转换,效率更高:

spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        int score = position + 1;
        scores[0] = score;
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        scores[0] = 1;
    }
});

计算总分并显示反馈

当所有Spinner都有选中值后,遍历存储分值的数组求和,再根据总分区间判断反馈:

// 计算总分
int totalScore = 0;
for(int score : scores){
    totalScore += score;
}

// 根据总分判断反馈(示例区间可根据需求调整)
String feedback;
if(totalScore >= 32){ // 8个问题,每题最高5分,总分40,32及以上为良好
    feedback = "良好";
}else if(totalScore >= 24){
    feedback = "一般";
}else{
    feedback = "较差";
}

// 显示反馈,比如用TextView
TextView feedbackTv = findViewById(R.id.feedback_text);
feedbackTv.setText(feedback);

二、是否仍需使用ArrayAdapter?

如果你的布局中已经通过android:entries="@array/rating"设置了Spinner的下拉选项,不需要手动创建ArrayAdapter——系统会自动基于你定义的string-array生成默认的ArrayAdapter,完成下拉列表的绑定。

但如果需要自定义Spinner的显示样式(比如修改下拉项的文字颜色、背景,或者使用自定义布局),则需要手动创建ArrayAdapter并设置,示例如下:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
        R.array.rating, R.layout.custom_spinner_item);
adapter.setDropDownViewResource(R.layout.custom_spinner_dropdown_item);
spinner1.setAdapter(adapter);

内容的提问来源于stack exchange,提问作者acha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:56:09