外部Activity跳转回Fragment和PullToRefreshListView的自动刷新问题

来源:互联网 发布:浙江柳林机械销售网络 编辑:程序博客网 时间:2024/05/17 00:58

需求:就是从Activity_A跳出到另外一个Activity_B里,当返回的时候要求Activity_A里的fragment里的listview实现自动刷新的功能。


首先解决的是当从外部返回到Activity的fragment中的时候,如何来调用fragment中的刷新方法,第一步想到了回调,说实话安卓里边大部分都用到了回调的机制,但是自己用到比较少,写完之后才发现确实挺简单的,上代码

首先是接口

public interface ShuaXinInterface {void onShuaXinTest(String str);}

很简单定义一个方法就行

然后是在需要刷新的fragment里实现我们的接口

public class VideoNoteFragment extends Fragment implements ShuaXinInterface{..它省略.@Overridepublic void onShuaXinTest(String str) {// TODO Auto-generated method stubSystem.out.println("刷新回调成功"+str);listView.setRefreshing(true);      }}

好了 接口实现完了下一步我们需要再需要的地方注册调用

private ShuaXinInterface shuaxin;public void setShuaXinCallBack(ShuaXinInterface shuaxin){this.shuaxin=shuaxin;}

在onActivityResult中收到返回值后开始调用接口

protected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);switch (resultCode) {    case RESULT_OK:   System.out.println("startactivityforresult成功!");   setShuaXinCallBack(myNoteFragment);shuaxin.onShuaXinTest("时发生的发生的sfsdfsdf");    break;default:    break;    }}


这样我们就通过回调完成了 外部调整Activity后,回调当前Activity的fragment的操作。

第二步就是自主刷新的问题,楼主用的PullToRefreshListView ,网上搜了些找到了比较靠谱的解决方案,方法是 setRefreshing(true);

但是只要刷新的动作,数据没更新,改动部分源码即可。将对adapter的空校验部分注释即可。

@Overrideprotected void onRefreshing(final boolean doScroll) {/** * If we're not showing the Refreshing view, or the list is empty, the * the header/footer views won't show so we use the normal method. *//*ListAdapter adapter = mRefreshableView.getAdapter();if (!mListViewExtrasEnabled || !getShowViewWhileRefreshing() || null == adapter || adapter.isEmpty()) {super.onRefreshing(doScroll);return;}*/super.onRefreshing(false);


over。



0 0
原创粉丝点击