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

Realm查询结果显示为Proxy对象,如何让TextView仅展示数字?

解决Realm查询结果显示Proxy对象而非目标数字的问题

嘿,这问题我熟!你看到的[dbRealm = proxy[{points:[1]}]]其实是Realm动态生成的代理对象的默认toString输出,咱们只要拿到真实的points字段值就行,给你几个具体的解决步骤:

1. 确保你的Realm实体类有正确的Getter方法

首先,你的Realm模型类(比如存储points的那个类)必须提供public的getter方法,Realm的代理对象会通过这个方法返回真实的数据库值:

public class ScoreModel extends RealmObject {
    private int points;

    // 必须要有这个public的getter
    public int getPoints() {
        return points;
    }

    // 可选:如果需要修改数据的话加上setter
    public void setPoints(int points) {
        this.points = points;
    }
}

2. 获取查询结果时调用Getter提取数值

不管你是单个对象还是列表,都不要直接用对象的toString,而是调用getPoints()拿到数字,再转成字符串显示到TextView:

// 假设你已经拿到了Realm查询结果RealmResults<ScoreModel> results
// 单个对象的情况(比如点击对应位置的条目)
ScoreModel currentModel = results.get(currentIndex); // currentIndex是你当前点击的索引
int targetPoints = currentModel.getPoints();
yourTextView.setText(String.valueOf(targetPoints));

// 如果是要拼接多个结果(比如你说的依次追加显示)
StringBuilder displayText = new StringBuilder();
for (ScoreModel model : results) {
    displayText.append(model.getPoints()).append(", ");
}
// 去掉最后多余的逗号和空格
if (displayText.length() > 0) {
    displayText.setLength(displayText.length() - 2);
}
yourTextView.setText(displayText.toString());

为啥会出现Proxy格式?

Realm为了实现懒加载和数据实时更新,会给每个RealmObject生成动态代理类(就是你看到的Proxy),直接打印这个对象的话,显示的是代理类的内部结构,而通过getter方法,Realm会帮你从数据库中取出真实的字段值,这样就能得到你想要的数字啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:47:09