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