下拉刷新(PullToRefresh控件)的用法例子之一

代码区:

package com.rainsong.pulltorefreshdemo;



import java.util.Arrays;
import java.util.LinkedList;


import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.format.DateUtils;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;


import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
import com.handmark.pulltorefresh.library.PullToRefreshListView;


public class MainActivity extends Activity {
    private PullToRefreshListView mPullToRefreshListView;
    private LinkedList mListItems;
    private ArrayAdapter mAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // Set a listener to be invoked when the list should be refreshed.
        mPullToRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_to_refresh_listview);
        mPullToRefreshListView.setOnRefreshListener(new OnRefreshListener() {
            @Override
            public void onRefresh(PullToRefreshBase refreshView) {
            //得到刷新时的日期时间。
                String label = DateUtils.formatDateTime(getApplicationContext(), System.currentTimeMillis(),
                        DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);
                Toast.makeText(MainActivity.this, "label="+label, Toast.LENGTH_LONG).show();
                
                // getLoadingLayoutProxy:获得加载布局代理;setLastUpdatedLabel:设置最后更新标签。
                refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
                
                // Do work to refresh the list here.
                new GetDataTask().execute();
            }
        });
        
        ListView actualListView = mPullToRefreshListView.getRefreshableView();
        
        mListItems = new LinkedList();
        mListItems.addAll(Arrays.asList(mStrings));
        
        mAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, mListItems);
        actualListView.setAdapter(mAdapter);
    }
    
    private class GetDataTask extends AsyncTask {


    //注意此方法是在子线程里运行的
        @Override
        protected String[] doInBackground(Void... params) {
            try {
                Thread.sleep(4000);
            } catch (InterruptedException e) {
            }
            return mStrings;
        }
        @Override
        protected void onPostExecute(String[] result) {
        //把内容加到第一个
            mListItems.addFirst("Added after refresh...");
            mAdapter.notifyDataSetChanged();
            
            // 更新完成,放开,回到原来状态。
            mPullToRefreshListView.onRefreshComplete();
            super.onPostExecute(result);
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


    private String[] mStrings = { "John", "Michelle", "Amy", "Kim", "Mary",
            "David", "Sunny", "James", "Maria", "Michael", "Sarah", "Robert",
            "Lily", "William", "Jessica", "Paul", "Crystal", "Peter",
            "Jennifer", "George", "Rachel", "Thomas", "Lisa", "Daniel", "Elizabeth",
            "Kevin" };

}

布局文件属性设置:

//设置刷新时提示部分的背景颜色 



//设置刷新时提示部分的字体颜色


//设置刷新时提示部分的动画风格  



    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
 
    android:id="@+id/pull_to_refresh_listview"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent" />



你可能感兴趣的:(Android)