Android -- PullToRefresh應用

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   ar   color   sp   for   

PullToRefresh                                                                        

支援ListView、ExpandableListView、GridView、WebView

:https://github.com/chrisbanes/Android-PullToRefresh

注意,若是要放到android studio中的話,需要在eclipse中以android studio工程的方式匯出。

Code                                                                                   

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              xmlns:tools="http://schemas.android.com/tools"              android:layout_width="match_parent"              android:layout_height="match_parent"              android:orientation="vertical"              tools:context=".MyActivity">    <com.handmark.pulltorefresh.library.PullToRefreshListView        android:id="@+id/lv_main"        android:layout_width="fill_parent"        android:layout_height="fill_parent"></com.handmark.pulltorefresh.library.PullToRefreshListView></LinearLayout>

配置:

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_my);        mList = new ArrayList<String>();        for (int i = 0; i < mStr.length; i++) {            mList.add(mStr[i]);        }        mListView = (PullToRefreshListView) findViewById(R.id.lv_main);//        mListView.setOnRefreshListener(new MyRefreshListener());        mListView.setOnRefreshListener(new MyRefreshListener2());        mMyAdapter = new MyAdapter();        mListView.setAdapter(mMyAdapter);        mListView.setMode(PullToRefreshBase.Mode.BOTH);        mListView.getLoadingLayoutProxy().setLastUpdatedLabel("setLastUpdatedLabel");        mListView.getLoadingLayoutProxy().setLoadingDrawable(getResources().getDrawable(R.drawable.ic_launcher));        mListView.getLoadingLayoutProxy().setPullLabel("setPullLabel");        mListView.getLoadingLayoutProxy().setRefreshingLabel("setRefreshingLabel");        mListView.getLoadingLayoutProxy().setReleaseLabel("setReleaseLabel");    }

PullToRefreshBase.Mode.BOTH指的是下拉和上拉重新整理兩張模式。

class MyRefreshListener implements PullToRefreshBase.OnRefreshListener {        @Override        public void onRefresh(PullToRefreshBase refreshView) {        }    }    class MyRefreshListener2 implements PullToRefreshBase.OnRefreshListener2 {        @Override        public void onPullDownToRefresh(PullToRefreshBase refreshView) {            mList.clear();            for (int i = 0; i < mStr.length; i++) {                mList.add(mStr[i]);            }            new Thread(new MyRunnable()).start();        }        @Override        public void onPullUpToRefresh(PullToRefreshBase refreshView) {            for (int i = 0; i < mStr.length; i++) {                mList.add(mStr[i]);            }            new Thread(new MyRunnable()).start();        }    }

這裡有兩個監聽器,我們來簡單說一下PullToRefreshBase.OnRefreshListener2 ,很明顯,分別指的是一個是上拉,一個是下拉的重新整理的回調。

public class MyActivity extends Activity {    private PullToRefreshListView mListView;//pulltorefresh控制項    private List<String> mList;//存放資料    private String[] mStr = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"};//資料    private MyAdapter mMyAdapter;//適配器    //一個延時,然後處理    private Handler mHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what) {                case 1:                    Log.i("handleMessage", "handleMessage");                    mListView.onRefreshComplete();                    mMyAdapter.notifyDataSetChanged();                    break;            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_my);        mList = new ArrayList<String>();//初始化        for (int i = 0; i < mStr.length; i++) {            mList.add(mStr[i]);//準備資料        }        mListView = (PullToRefreshListView) findViewById(R.id.lv_main);//        mListView.setOnRefreshListener(new MyRefreshListener());        mListView.setOnRefreshListener(new MyRefreshListener2());//設定監聽器        mMyAdapter = new MyAdapter();//初始化適配器        mListView.setAdapter(mMyAdapter);        mListView.setMode(PullToRefreshBase.Mode.BOTH);//模式為上拉和下拉        mListView.getLoadingLayoutProxy().setLastUpdatedLabel("setLastUpdatedLabel");        mListView.getLoadingLayoutProxy().setLoadingDrawable(getResources().getDrawable(R.drawable.ic_launcher));//loading的時候的圖片        mListView.getLoadingLayoutProxy().setPullLabel("setPullLabel");        mListView.getLoadingLayoutProxy().setRefreshingLabel("setRefreshingLabel");        mListView.getLoadingLayoutProxy().setReleaseLabel("setReleaseLabel");    }    class MyRefreshListener implements PullToRefreshBase.OnRefreshListener {        @Override        public void onRefresh(PullToRefreshBase refreshView) {        }    }    class MyRefreshListener2 implements PullToRefreshBase.OnRefreshListener2 {        @Override        public void onPullDownToRefresh(PullToRefreshBase refreshView) {            mList.clear();            for (int i = 0; i < mStr.length; i++) {//添加資料                mList.add(mStr[i]);            }            new Thread(new MyRunnable()).start();//執行延時        }        @Override        public void onPullUpToRefresh(PullToRefreshBase refreshView) {            for (int i = 0; i < mStr.length; i++) {//添加資料                mList.add(mStr[i]);            }            new Thread(new MyRunnable()).start();//執行延時        }    }    class MyAdapter extends BaseAdapter {        @Override        public int getCount() {            return mList.size();        }        @Override        public Object getItem(int i) {            return mList.get(i);        }        @Override        public long getItemId(int i) {            return i;        }        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            if (view == null) {                view = LayoutInflater.from(MyActivity.this).inflate(R.layout.item, null);                TextView tv = (TextView) view.findViewById(R.id.txt);                tv.setText(mList.get(i));            } else {                TextView tv = (TextView) view.findViewById(R.id.txt);                tv.setText(mList.get(i));            }            return view;        }    }    class MyRunnable implements Runnable {        @Override        public void run() {            try {                Thread.sleep(2000);//延時2s            } catch (InterruptedException e) {                e.printStackTrace();            }            Log.i("MyRunnable", "MyRunnable");            mHandler.sendEmptyMessage(1);        }    }}
我是天王蓋地虎的分割線                                                             

 

 

原始碼:https://github.com/pinguo-yuyidong/PullToRefresh

Android -- PullToRefresh應用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.