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