【问题标题】:Android - How to reload data after Volley requestAndroid - 如何在 Volley 请求后重新加载数据
【发布时间】:2016-03-16 01:54:54
【问题描述】:

我的问题很简单。我有一个简单的片段,它不是列表,而只是 5 个 TextView。一旦这个片段运行,它就会向 API 端点发出一个 volley 请求,在 onCreateView 方法已经完成后它的响应到达。通常,人们会使用 adapter.notifyDataSetChanged() 以便显示新数据,即使它在正常片段生命周期结束后到达也是如此。问题是由于我的片段不是列表,它没有适配器。在没有适配器的情况下如何使用 notifyDataSetChanged() ?我应该寻找什么解决方案来解决这个问题?任何反馈将不胜感激。

【问题讨论】:

  • @cricket_007 哦。对..请求已经有一个监听器..正在考虑不同的东西。

标签: java android asynchronous android-volley notifydatasetchanged


【解决方案1】:

假设你有一个字段

private TextView textView1;

在某处你有一个 StringRequest 代表 Volley,然后在 onResponse 代表 Response.Listener,只需设置 TextView 的文本。

public void onResponse(String response) {
    textView1.setText(response);
}

如果你有一个单独的类来处理你的 Volley 请求,那么你应该为你的方法添加一个 Response.Listener 的参数。

例如

MyServer.doLogin("http://myurl.com/login", "username:password", new Response<String>.Listener() {
    public void onResponse(String response) {
        // Do something here
    }
};

MyServer.doLogin 可能是这样的(注意:这是一个示例,可能无法编译)

public void doLogin(String url, String cred, Response<String>.Listener callback) {
    StringRequest request = new StringRequest(
        url, 
        Request.GET, 
        callback,
        new Response.ErrorListener() { ... }
    );

    addToRequestQueue(request); 
}

【讨论】:

  • 嗨@cricket_007。我相信你的回答是正确的。唯一的问题是我试图保持 MVC 方法,而我的请求位于一个单独的类中。我通常会尝试遵循最佳实践,并尝试仅在片段上放置生命周期方法。考虑到这一点,我必须将什么对象传递给响应,以便我可以以最干净的方式更新数据?你能指出我正确的方向吗?您是否同意将截击请求放在单独的班级中最好?告诉我。
  • 是的,我用我的 Volley 东西来做这件事,并且我采用了我的编辑中显示的模式
【解决方案2】:

您可以尝试重置数据收集并使用 Invalidate() 刷新视图,尝试将这些操作混合在一个方法中,并在需要时调用它们。

【讨论】:

    猜你喜欢
    • 2014-09-05
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2022-01-16
    • 2015-05-25
    • 2018-12-04
    相关资源
    最近更新 更多