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

安卓开发:如何利用用户输入的百分比从SQLite获取适配院校推荐?

解决方案:用传递的百分比筛选SQLite中的院校列表

看起来你已经完成了第一步——把学生的百分比从MainActivity传递到了DisplayList,接下来只需要把这个数值用在数据库查询里,筛选出符合条件的院校即可。我们一步步来改:

1. 完善DisplayList中百分比的处理

首先,在DisplayList里你已经拿到了传递过来的百分比字符串,但需要把它转换成数值类型(比如float),这样才能和数据库里的录取分数线做比较。另外,要把这个数值传递给数据库查询方法:

修改后的DisplayList.java:

public class DisplayList extends AppCompatActivity {
    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
        setContentView(R.layout.activity_display_list);
        TextView percentage = (TextView)findViewById(R.id.textView);
        Bundle bundle = getIntent().getExtras();
        
        // 处理传递过来的百分比
        float studentPercentage = 0;
        if (bundle != null && bundle.getString("Percentage") != null) {
            String perStr = bundle.getString("Percentage");
            // 显示传递过来的百分比到TextView
            percentage.setText("你的百分比: " + perStr + "%");
            // 转成float类型,注意捕获可能的转换异常
            try {
                studentPercentage = Float.parseFloat(perStr);
            } catch (NumberFormatException e) {
                e.printStackTrace();
                // 如果输入不是有效数字,可以提示用户
                Toast.makeText(this, "请输入有效的百分比数值", Toast.LENGTH_SHORT).show();
                finish(); // 回到MainActivity
                return;
            }
        } else {
            // 没有拿到百分比的情况,返回主页面
            Toast.makeText(this, "请输入百分比", Toast.LENGTH_SHORT).show();
            finish();
            return;
        }

        this.listView = (ListView)findViewById(R.id.listview);
        DatabaseAccess databaseAccess = DatabaseAccess.getInstance(this);
        databaseAccess.open();
        // 调用修改后的getColleges方法,传入学生百分比
        List<String> colleges = databaseAccess.getColleges(studentPercentage);
        databaseAccess.close();
        
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, colleges);
        this.listView.setAdapter(adapter);
    }
}

2. 修改DatabaseAccess的查询方法,添加筛选条件

接下来需要修改DatabaseAccess.java中的getColleges方法,让它接受百分比参数,并执行带条件的SQL查询。这里假设你的Ahmednagar表中有一个字段(比如cutoff_percentage)存储了院校的最低录取百分比——如果你的字段名不同,记得改成你实际的字段名。

另外,原来的方法把每个字段单独添加到列表里,会导致ListView里每一项是单个字段(比如院校名、地址等),这显然不是你想要的。我们把每个院校的信息组合成一个完整的字符串,方便显示:

修改后的DatabaseAccess.java的getColleges方法:

/**
 * 根据学生百分比筛选符合条件的院校
 * @param studentPercentage 学生的综合百分比
 * @return 符合条件的院校列表
 */
public List<String> getColleges(float studentPercentage) {
    List<String> list = new ArrayList<>();
    // 假设你的表中有cutoff_percentage字段,筛选学生百分比>=院校最低录取线的院校
    // 使用参数化查询避免SQL注入
    String query = "SELECT * FROM Ahmednagar WHERE cutoff_percentage <= ?";
    Cursor cursor = database.rawQuery(query, new String[]{String.valueOf(studentPercentage)});
    
    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
        // 把院校的多个字段组合成一个字符串,比如:
        // 院校名称 (录取分数线: XX%) - 地址
        String collegeInfo = cursor.getString(1) // 假设第1列是院校名称
                + " (录取分数线: " + cursor.getString(5) + "%)" // 假设第5列是cutoff_percentage
                + " - " + cursor.getString(2); // 假设第2列是院校地址
        
        list.add(collegeInfo);
        cursor.moveToNext();
    }
    cursor.close();
    return list;
}

注意事项:

  • 请根据你实际的表结构调整字段索引(cursor.getString(1)、cursor.getString(5)等),确保对应到正确的字段(比如院校名称、录取分数线、地址等)。
  • SQL查询的条件可以根据你的需求调整:如果是推荐学生百分比大于等于院校录取线的,用cutoff_percentage <= ?;如果是推荐录取线接近学生百分比的,可以调整条件(比如cutoff_percentage BETWEEN ?-5 AND ?+5)。
  • 一定要用参数化查询(rawQuery的第二个参数),不要直接把百分比拼到SQL字符串里,避免SQL注入风险。

3. 测试验证

现在运行APP,输入一个百分比,点击提交后,DisplayList应该会显示所有录取分数线低于或等于该百分比的院校列表了。

如果遇到问题,可以检查:

  • 数据库表的字段名和索引是否正确
  • 百分比转换是否成功(比如输入的是合法的数字)
  • 数据库是否正确打开,表是否存在

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:30:56