【问题标题】:Cannot access the getter within POJO class无法访问 POJO 类中的 getter
【发布时间】:2018-02-06 20:19:15
【问题描述】:

我正在尝试访问我的响应模式中 POJO 类中的 getter 方法。

public class Event implements Parcelable{

    class Name {

        @SerializedName("text")
        @Expose
        public String eventName;

        public String getEventName() {
            return eventName;
        }
    }
.
. some parcelable stuff here
.
}

我正在尝试从我的适配器类中访问 getEventName 方法。我的一段代码是这样的(无法访问方法,geteventname):

holder.cardTextView.setText(eventsList.get(position).getEventName());

如果我在内部 pojo 类之外定义另一个变量,我可以到达它的 getter,但我不能到达 pojo 类中的那个。

编辑 我正在尝试读取这样的 json 响应,名称下的文本是我试图为其构建模式的文本。

    "events": [
        {
            "name": {
                "text": "textextextext", 
                "html": "textextextext"
            }, 
            "description": {} 
.
.
.

提前谢谢你。

【问题讨论】:

    标签: android gson adapter pojo


    【解决方案1】:

    JSON 嵌套很有趣。

    name 是一个内部类。看起来description 也是。

    events":[ { "name":{ "text":" text ", "html":"something " }, "description":{ }, ... }]

    在上面,有一个events的数组。

    每个事件都有一个name,每个名称都有一个“文本”和一个“html”。 每个事件还有一个description,它有自己的字段。

    你在正确的轨道上:

    public class Event implements Parcelable{
    
    @SerializedName("name")
    @Expose
    public Name name;
    
    @SerializedName("description")
    @Expose
    public Description description;
    
    
    public class Name {
    
        @SerializedName("text")
        @Expose
        public String eventName;
    
        public String getEventName() {
            return eventName;
        }
    }
    
    public class Description {
    
       //whatever fields are in the description object in the json
    }
    
    .
    . some parcelable stuff here
    .
    }
    

    您可以像这样访问它:holder.cardTextView.setText(eventsList.get(position).name.getEventName());

    如果这可行,您可以通过向事件类添加自定义 getter 来清理它。

    【讨论】:

    • 对垃圾邮件感到抱歉,我试图在事件 json 数组 "events":[ { "name":{ "text":" text ", "html" 下获取名称 jsonobject 中的文本字符串:"某事" }, "描述":{ },
    • 非常感谢 edthethird。我在您对 Event 类的更改上添加了一个 getter,并通过它调用 getEventName 方法。谢谢!!!
    【解决方案2】:
    holder.cardTextView.setText(eventsList.get(position).getEventName());
    

    试试这个。函数调用使用括号

    【讨论】:

      【解决方案3】:

      试试这个getEventName()带括号:

      holder.cardTextView.setText(eventsList.get(position).getEventName());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-14
        • 1970-01-01
        • 2019-09-25
        • 2020-07-29
        • 2021-03-28
        • 2017-10-01
        • 2013-01-04
        • 1970-01-01
        相关资源
        最近更新 更多