Android下拉/上拉刷新ListView之Android-PullToRefresh

cm54 9年前發布 | 3K 次閱讀 Java Android

Android下拉/上拉刷新ListView之Android-PullToRefresh

Android下拉和上拉刷新ListView列表內容的的一個優秀開源框架,在github上的項目鏈接地址:https://github.com/chrisbanes/Android-PullToRefresh

該PullToRefresh第三方控件功能強大,使用方便。
具體使用方法:

(1)首先到github上把該項目下載解壓,導入到Eclipse的工程中。
(2)將Android-PullToRefresh作為一個lib引用到自己的項目中。
然后直接使用即可。
現在給出一個Demo。

import java.util.LinkedList;

import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnLastItemVisibleListener;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

import android.support.v7.app.ActionBarActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.os.Bundle;
import android.os.Handler;

public class MainActivity extends ActionBarActivity {

private PullToRefreshListView mPullRefreshListView;  
private LinkedList<String> mListItems;  
private ArrayAdapter<String> mAdapter;  

// 數據  
private int DATA = 0;  

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);  

    mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);  

    // Mode.BOTH:支持下拉和上拉刷新。  
    mPullRefreshListView.setMode(Mode.BOTH);  

    mPullRefreshListView  
            .setOnRefreshListener(new OnRefreshListener2<ListView>() {  

                // 下拉  
                @Override  
                public void onPullDownToRefresh(  
                        PullToRefreshBase<ListView> refreshView) {  
                    Toast.makeText(getApplicationContext(), "下拉刷新",  
                            Toast.LENGTH_SHORT).show();  

                    addItem();  
                }  

                // 上拉  
                @Override  
                public void onPullUpToRefresh(  
                        PullToRefreshBase<ListView> refreshView) {  
                    Toast.makeText(getApplicationContext(), "上拉刷新",  
                            Toast.LENGTH_SHORT).show();  

                    addItem();  
                }  
            });  

    // 列表到底,即看到最后一個元素。  
    mPullRefreshListView  
            .setOnLastItemVisibleListener(new OnLastItemVisibleListener() {  

                @Override  
                public void onLastItemVisible() {  
                    Toast.makeText(getApplication(), "已經到底!",  
                            Toast.LENGTH_SHORT).show();  
                }  
            });  

    ListView actualListView = mPullRefreshListView.getRefreshableView();  

    mListItems = new LinkedList<String>();  
    mAdapter = new ArrayAdapter<String>(this,  
            android.R.layout.simple_list_item_1, mListItems);  
    actualListView.setAdapter(mAdapter);  
}  

// 添加數據  
private void addItem() {  

    new Handler().postDelayed(new Runnable() {  

        @Override  
        public void run() {  
            mListItems.add((DATA++) + "");  

            mAdapter.notifyDataSetChanged();  
            mPullRefreshListView.onRefreshComplete();  
        }  
    }, 1000);  
}  

} </pre>

需要的activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&quot;
android:layout_width="match_parent"
android:layout_height="match_parent" >

    <com.handmark.pulltorefresh.library.PullToRefreshListView  
        android:id="@+id/pull_refresh_list"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  

        android:divider="@android:color/black"  
        android:dividerHeight="1dip"  

        android:fastScrollEnabled="false"  
        android:footerDividersEnabled="false"  
        android:headerDividersEnabled="false"  
        android:smoothScrollbar="true" />  
</RelativeLayout>  </pre> 


 本文由用戶 cm54 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!