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();
    }
}

}

發佈了29 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章