Android下拉重新整理ListView——RTPullListView

來源:互聯網
上載者:User


使用過程中可以對下拉顯示效果進行自訂,如果要修改頂部下拉顯示,則只需修改pulllist_head.xml即可,修改底部擷取更多則修改list_footview.xml即可。
接下來是在Activity中使用:
[java]
/**
 * PullListView
 * @author Ryan
 *
 */ 
public class RTPullListViewActivity extends Activity { 
    private static final int INTERNET_FAILURE = -1; 
    private static final int LOAD_SUCCESS = 1; 
    private static final int LOAD_MORE_SUCCESS = 3; 
    private static final int NO_MORE_INFO = 4; 
    private static final int LOAD_NEW_INFO = 5; 
     
    private RTPullListView pullListView; 
    private ProgressBar moreProgressBar; 
     
    private List<String> dataList; 
    private ArrayAdapter<String> adapter; 
     
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        pullListView = (RTPullListView) this.findViewById(R.id.pullListView); 
         
        dataList = new ArrayList<String>(); 
        for (int i = 0; i < 5; i++) { 
            dataList.add("Item data "+i); 
        } 
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dataList); 
        pullListView.setAdapter(adapter); 
         
        //添加listview底部擷取更多按鈕(可自訂) 
        LayoutInflater inflater = LayoutInflater.from(this); 
        View view = inflater.inflate(R.layout.list_footview, null); 
        RelativeLayout footerView =(RelativeLayout) view.findViewById(R.id.list_footview); 
        moreProgressBar = (ProgressBar) view.findViewById(R.id.footer_progress); 
        pullListView.addFooterView(footerView); 
         
        //下拉重新整理監聽器 
        pullListView.setonRefreshListener(new OnRefreshListener() { 
             
            @Override 
            public void onRefresh() { 
                new Thread(new Runnable() { 
                     
                    @Override 
                    public void run() { 
                        try { 
                            //類比資料重新整理 
                            Thread.sleep(2000); 
                            dataList.clear(); 
                            for (int i = 0; i < 5; i++) { 
                                dataList.add("Item data "+i); 
                            } 
                            myHandler.sendEmptyMessage(LOAD_NEW_INFO); 
                        } catch (InterruptedException e) { 
                            e.printStackTrace(); 
                        } 
                    } 
                }).start(); 
            } 
        }); 
         
        //擷取更多監聽器 
        footerView.setOnClickListener(new OnClickListener() { 
             
            @Override 
            public void onClick(View v) { 
 
                moreProgressBar.setVisibility(View.VISIBLE); 
                 
                new Thread(new Runnable() { 
                     
                    @Override 
                    public void run() { 
                        try { 
                            //類比資料重新整理 
                            Thread.sleep(2000); 
                            for (int i = 0; i < 5; i++) { 
                                dataList.add("New item data "+i); 
                            } 
                            myHandler.sendEmptyMessage(LOAD_MORE_SUCCESS); 
                        } catch (InterruptedException e) { 
                            e.printStackTrace(); 
                        } 
                    } 
                }).start(); 
            } 
        }); 
    } 
     
    //結果處理 
    private Handler myHandler = new Handler(){ 
 
        @Override 
        public void handleMessage(Message msg) { 
            super.handleMessage(msg); 
            switch (msg.what) { 
            case LOAD_MORE_SUCCESS: 
                moreProgressBar.setVisibility(View.GONE); 
                adapter.notifyDataSetChanged(); 
                pullListView.setSelectionfoot(); 
                break; 
 
            case LOAD_NEW_INFO: 
                adapter.notifyDataSetChanged(); 
                pullListView.onRefreshComplete(); 
                break; 
            default: 
                break; 
            } 
        } 
         
    }; 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.