Java 未调用Android Pull To Refresh onFresh方法
我正在使用Johan Nilsson Android Pull刷新我的Android应用程序中的库。我遇到的问题是,onRefresh方法似乎没有被调用(因为没有显示我的日志),这是什么原因造成的,以及如何修复它Java 未调用Android Pull To Refresh onFresh方法,java,android,pull-to-refresh,Java,Android,Pull To Refresh,我正在使用Johan Nilsson Android Pull刷新我的Android应用程序中的库。我遇到的问题是,onRefresh方法似乎没有被调用(因为没有显示我的日志),这是什么原因造成的,以及如何修复它 public class MyFragment extends RoboFragment implements ResponseListener<List<TimelineItem>>{ @InjectView (R.id.TwitterList)
public class MyFragment extends RoboFragment implements ResponseListener<List<TimelineItem>>{
@InjectView (R.id.TwitterList) private PullToRefreshListView listView;
private List<TimelineItem> results;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
return inflater.inflate(R.layout.fragment_timeline, container,false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState)
{
super.onViewCreated(view, savedInstanceState);
listView.setOnRefreshListener(new OnRefreshListener() {
public void onRefresh() {
Log.v("onRefresh", "done");
new FetchNewData().execute("");
}
});
TimelineTask request = new TimelineTask(getActivity());
request.onResponseListener(this);
request.execute(new String());
}
/**
* Callback handler that is called
* after data is fetched from server.
* @author mario
*/
public void onComplete(List<TimelineItem> result)
{
if (result != null && !result.isEmpty())
{
this.results = result;
Collections.sort(results,Collections.reverseOrder());
TimelineAdapter adapter = new TimelineAdapter(getActivity(),R.layout.fragment_timeline_item, results);
listView.setAdapter(adapter);
}
else
Toast.makeText(getActivity(), "No Account! Available Please an Account", Toast.LENGTH_LONG).show();
}//end onComplete method
private class FetchNewData extends AsyncTask<String, Void,List<TimelineItem> >
{
@Override
protected void onPostExecute(List<TimelineItem> result)
{
results.addAll(result);
listView.onRefreshComplete();
Log.v("onPostExecuted", "done");
}
@Override
protected List<TimelineItem> doInBackground(String... params)
{
Log.v("doInBackground", "done");
Collections.sort(results);
return results;
}
}
公共类MyFragment扩展RoboFragment实现ResponseListener{
@InjectView(R.id.TwitterList)私有PullToRefreshListView listView;
私人名单结果;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态)
{
返回充气机。充气(R.layout.fragment_时间线,容器,假);
}
@凌驾
已创建视图上的公共void(视图,捆绑保存状态)
{
super.onViewCreated(视图,savedInstanceState);
setOnRefreshListener(新的OnRefreshListener(){
公共void onRefresh(){
Log.v(“onRefresh”、“done”);
new FetchNewData().execute(“”);
}
});
TimelineTask请求=新的TimelineTask(getActivity());
请求。onResponseListener(本);
执行(新字符串());
}
/**
*调用的回调处理程序
*从服务器获取数据之后。
*@作者马里奥
*/
未完成的公共void(列表结果)
{
if(result!=null&&!result.isEmpty())
{
这个结果=结果;
Collections.sort(results,Collections.reverseOrder());
TimelineAdapter=新的TimelineAdapter(getActivity(),R.layout.fragment\u timeline\u项,结果);
setAdapter(适配器);
}
其他的
Toast.makeText(getActivity(),“无帐户!请提供帐户”,Toast.LENGTH_LONG.show();
}//末端未完成法
私有类FetchNewData扩展异步任务
{
@凌驾
受保护的void onPostExecute(列表结果)
{
results.addAll(result);
onRefreshComplete();
Log.v(“onPostExecuted”、“done”);
}
@凌驾
受保护列表doInBackground(字符串…参数)
{
Log.v(“doInBackground”、“done”);
收集。排序(结果);
返回结果;
}
}
为什么要在onViewCreated
中设置刷新侦听器而不是onCreate
?因为我希望在创建视图后附加侦听器,但我不认为这就是为什么我会遇到这个问题的原因。这很好,但我认为您的实现过于复杂。不确定为什么要覆盖onCreateView()
和onViewCreated()
。我使用了这个库并在onCreate()
中附加了侦听器,但从未遇到任何问题。我在一个框架内使用这个库