Android - 如何在Volley请求后重新加载数据

时间:2016-03-16 01:54:54

标签: java android asynchronous android-volley notifydatasetchanged

我的问题很简单。我有一个简单的片段,不是列表,只是5个TextViews。一旦这个片段运行,它就会向一个API端点发出一个凌空请求,在该端点上,在onCreateView方法完成后,它的响应就会到来。通常,可以使用 adapter.notifyDataSetChanged(),这样即使新数据在正常的片段生命周期结束后到达,也可以显示新数据。问题是因为我的片段不是列表,所以它没有适配器。如果没有适配器,我怎么能使用notifyDataSetChanged()?我应该寻找什么解决方案来解决这个问题?任何反馈将不胜感激。

2 个答案:

答案 0 :(得分:2)

假设你有一个

字段
private TextView textView1;

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

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

如果您有一个可以完成Volley请求的seprate类,那么您应该为您的方法添加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); 
}

答案 1 :(得分:0)

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