PullToRefreshExpandableListView在Fragment中应用

源码地址:https://github.com/chrisbanes/Android-PullToRefresh

这个大家都找得到
现在说说如何在Fragment中实现 PullToRefreshExpandableListView 首先 从源文件中可以找到 在
Android-PullToRefresh/extras/PullToRefreshListFragment/src/com/handmark/pulltorefresh/extras/listfragment/文件夹目录中有 三个 .java 文件
1、讲这个三个文件拷贝到你的项目中,当然你也可以只拷贝 PullToRefreshBaseListFragment.java,你会发现他是一个抽象类,并且没有用public 修饰,你最好添加上(理由待会再说)
2、用你需要 添加 pullToRe(PullToRefreshExpandableListView简称)的Fragment集成这个抽象类,同事实现他的抽象方法,(如果这个Fragment和和抽象类不属于同一目录下,会导致你无法正确导入该类,所以之前让你先加上public修饰)
3、看一下代码。

public class NewCallFragment extends PullToRefreshBaseListFragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Remove ListView and add PullToRefreshListView in its place
    View view = inflater.inflate(R.layout.fragment_new_call, container, false);
    mFlag = Constants.FLAG_INTERPHONE;
    init(view);
    return view;
}

@Override
protected PullToRefreshExpandableListView onCreatePullToRefreshListView(LayoutInflater inflater, Bundle savedInstanceState) {
    return new PullToRefreshExpandableListView(getContext());   // 返回你需要镶嵌到PTR中的XListView
}

private void initView(View view) {
    ptrListView = (PullToRefreshExpandableListView) view.findViewById(R.id.ptr_newcall);
    //getRefreshableView()得到XListView 以方便实现点击事件
    expandableListView = ptrListView.getRefreshableView();   
    expandAdapter = new CallExpandableAdapter(getContext());
    expandableListView.setGroupIndicator(null);
    expandableListView.setDivider(null);
    expandableListView.setChildDivider(null);
    expandableListView.setAdapter(expandAdapter);
    expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
        @Override
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {

            return false;
        }
    });

    ptrListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ExpandableListView>() {
        @Override
        public void onRefresh(PullToRefreshBase<ExpandableListView> refreshView) {
            new OnFinish().execute();
        }
    });


}

class OnFinish extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {
        CmdGroup.getSelfGroupData();
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        ptrListView.onRefreshComplete();
    }
}

}

猜你喜欢

转载自blog.csdn.net/qq_35920289/article/details/70175235