Android - 如何在 Volley 请求后重新加载数据
Android - How to reload data after Volley request
我的问题很简单。我有一个简单的片段,它 不是列表 而只是 5 个 TextView。此片段运行后,它会向 API 端点发出 volley 请求,在 onCreateView 方法完成后其响应到达该端点。通常,人们会使用 adapter.notifyDataSetChanged() 这样即使新数据在正常片段生命周期结束后到达也可以显示。问题是因为我的片段不是列表,所以它没有适配器。在没有适配器的情况下如何使用 notifyDataSetChanged() ?我应该寻找什么解决方案来解决这个问题?任何反馈将不胜感激。
您可以尝试重置数据收集并使用 Invalidate() 刷新视图,尝试将这些操作混合在一个方法中,并在需要时调用它们。
假设你有一个字段
private TextView textView1;
在某处你有 Volley 的 StringRequest
,然后在 Response.Listener
的 onResponse
中,只需设置 TextView 的文本。
public void onResponse(String response) {
textView1.setText(response);
}
如果您有单独的 class 执行您的 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);
}
我的问题很简单。我有一个简单的片段,它 不是列表 而只是 5 个 TextView。此片段运行后,它会向 API 端点发出 volley 请求,在 onCreateView 方法完成后其响应到达该端点。通常,人们会使用 adapter.notifyDataSetChanged() 这样即使新数据在正常片段生命周期结束后到达也可以显示。问题是因为我的片段不是列表,所以它没有适配器。在没有适配器的情况下如何使用 notifyDataSetChanged() ?我应该寻找什么解决方案来解决这个问题?任何反馈将不胜感激。
您可以尝试重置数据收集并使用 Invalidate() 刷新视图,尝试将这些操作混合在一个方法中,并在需要时调用它们。
假设你有一个字段
private TextView textView1;
在某处你有 Volley 的 StringRequest
,然后在 Response.Listener
的 onResponse
中,只需设置 TextView 的文本。
public void onResponse(String response) {
textView1.setText(response);
}
如果您有单独的 class 执行您的 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);
}