源码地址: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();
}
}
}