PullToRefresh的使用

主界面↓

  1 package com.wangzhen.pulltorefresh;

  2 

  3 import java.util.ArrayList;

  4 import java.util.List;

  5 

  6 import com.handmark.pulltorefresh.library.PullToRefreshBase;

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

  8 import com.handmark.pulltorefresh.library.PullToRefreshListView;

  9 import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;

 10 import com.lidroid.xutils.ViewUtils;

 11 import com.lidroid.xutils.view.annotation.ContentView;

 12 import com.lidroid.xutils.view.annotation.ViewInject;

 13 import com.wangzhen.adapter.MessageAdapter;

 14 import com.wangzhen.bean.NewsBean;

 15 import com.wangzhen.listener.HttpDataListener;

 16 import com.wangzhen.tasks.LoadNewsTask;

 17 

 18 import android.support.v7.app.ActionBarActivity;

 19 import android.text.format.DateUtils;

 20 import android.widget.ListView;

 21 import android.content.Context;

 22 import android.os.Bundle;

 23 

 24 @ContentView(R.layout.activity_main)

 25 public class MainActivity extends ActionBarActivity {

 26 

 27     @ViewInject(R.id.ListView_PullToRefresh)

 28     private PullToRefreshListView ListView_PullToRefresh;

 29 

 30     Context mContext;

 31     MessageAdapter adapter;

 32     private HttpDataListener mDataListener;

 33 

 34     @Override

 35     protected void onCreate(Bundle savedInstanceState) {

 36         super.onCreate(savedInstanceState);

 37         ViewUtils.inject(this);

 38         mContext = this;

 39 

 40         Setup();

 41         InitListener();

 42 

 43         List<NewsBean> list = new ArrayList<NewsBean>();

 44         for (int i = 0; i < 5; i++) {

 45             NewsBean bean = new NewsBean();

 46             bean.setNewsImageURL("");

 47             bean.setNewsTitle("标题" + (i + 1));

 48             bean.setNewsContent("内容" + (i + 1));

 49             list.add(bean);

 50         }

 51         adapter = new MessageAdapter(mContext, list);

 52         ListView_PullToRefresh.setAdapter(adapter);

 53 

 54         ListView_PullToRefresh

 55                 .setOnRefreshListener(new OnRefreshListener<ListView>() {

 56 

 57                     @Override

 58                     public void onRefresh(

 59                             PullToRefreshBase<ListView> refreshView) {

 60                         String time = DateUtils.formatDateTime(mContext,

 61                                 System.currentTimeMillis(),

 62                                 DateUtils.FORMAT_SHOW_TIME

 63                                         | DateUtils.FORMAT_SHOW_DATE

 64                                         | DateUtils.FORMAT_ABBREV_ALL);

 65 

 66                         // 下拉刷新

 67                         if (refreshView.isShownHeader()) {

 68                             // 设置刷新标签

 69                             ListView_PullToRefresh.getLoadingLayoutProxy()

 70                                     .setRefreshingLabel("正在刷新");

 71                             // 设置刷新标签

 72                             ListView_PullToRefresh.getLoadingLayoutProxy()

 73                                     .setPullLabel("下拉刷新");

 74                             // 设置刷新标签

 75                             ListView_PullToRefresh.getLoadingLayoutProxy()

 76                                     .setReleaseLabel("释放开始刷新");

 77                             // 设置上一次刷新的提示标签

 78                             refreshView.getLoadingLayoutProxy()

 79                                     .setLastUpdatedLabel("最后更新时间:" + time);

 80                         }

 81                         // 上拉加载

 82                         if (refreshView.isShownFooter()) {

 83                             // 设置刷新标签

 84                             ListView_PullToRefresh.getLoadingLayoutProxy()

 85                                     .setRefreshingLabel("正在加载");

 86                             // 设置刷新标签

 87                             ListView_PullToRefresh.getLoadingLayoutProxy()

 88                                     .setPullLabel("上拉加载更多");

 89                             // 设置刷新标签

 90                             ListView_PullToRefresh.getLoadingLayoutProxy()

 91                                     .setReleaseLabel("释放开始加载");

 92                             // 设置上一次刷新的提示标签

 93                             refreshView.getLoadingLayoutProxy()

 94                                     .setLastUpdatedLabel("最后加载时间:" + time);

 95                         }

 96                         new LoadNewsTask(ListView_PullToRefresh, mDataListener)

 97                                 .execute();

 98                     }

 99                 });

100     }

101 

102     /**

103      * 初始化监听器

104      */

105     private void InitListener() {

106         mDataListener = new HttpDataListener() {

107 

108             @Override

109             public void ParseResponse(List<NewsBean> list) {

110                 if (list == null) {

111                     return;

112                 }

113                 adapter.AddData(list);

114                 adapter.notifyDataSetChanged();

115             }

116         };

117     }

118 

119     /**

120      * 对下拉刷新和上拉加载进行设置

121      */

122     private void Setup() {

123         /**

124          * PullToRefresh刷新模式 

125          * Both:上拉刷新和下拉刷新都支持 

126          * DIABLED:禁用上拉下拉刷新

127          * PULL_FROM_START:仅支持下拉刷新 

128          * PULL_FROM_END:仅支持上拉加载

129          * MANUAL_REFRESH_ONLY:只允许手动触发

130          */

131         ListView_PullToRefresh.setMode(Mode.BOTH);

132     }

133 }

 HTTP接口↓

 1 package com.wangzhen.listener;

 2 

 3 import java.util.List;

 4 

 5 import com.wangzhen.bean.NewsBean;

 6 

 7 /**

 8  * HTTP请求接口

 9  * @author Administrator

10  *

11  */

12 public interface HttpDataListener {

13 

14     /***

15      * 解析服务器返回结果

16      * 

17      * @param list

18      */

19     public abstract void ParseResponse(List<NewsBean> list);

20 }

异步加载类↓

 1 package com.wangzhen.tasks;

 2 

 3 import java.util.ArrayList;

 4 import java.util.List;

 5 

 6 import com.handmark.pulltorefresh.library.PullToRefreshListView;

 7 import com.wangzhen.bean.NewsBean;

 8 import com.wangzhen.listener.HttpDataListener;

 9 

10 import android.os.AsyncTask;

11 

12 /**

13  * 异步加载新闻

14  * 

15  * @author Administrator

16  * 

17  */

18 public class LoadNewsTask extends AsyncTask<String, Void, List<NewsBean>> {

19 

20     PullToRefreshListView mListView;

21     HttpDataListener mListener;

22 

23     public LoadNewsTask(PullToRefreshListView listView,

24             HttpDataListener listener) {

25         mListView = listView;

26         mListener = listener;

27     }

28 

29     @Override

30     protected void onPostExecute(List<NewsBean> result) {

31         super.onPostExecute(result);

32         mListView.onRefreshComplete();

33         mListener.ParseResponse(result);

34     }

35 

36     @Override

37     protected List<NewsBean> doInBackground(String... params) {

38         try {

39             Thread.sleep(2000);

40         } catch (InterruptedException e) {

41             e.printStackTrace();

42         }

43         return GenerateData();

44     }

45 

46     /**

47      * 生成数据

48      * 

49      * @return

50      */

51     private List<NewsBean> GenerateData() {

52         List<NewsBean> list = new ArrayList<NewsBean>();

53         for (int i = 0; i < 5; i++) {

54             NewsBean bean = new NewsBean();

55             bean.setNewsImageURL("");

56             bean.setNewsTitle("添加标题" + (i + 1));

57             bean.setNewsContent("添加内容" + (i + 1));

58             list.add(bean);

59         }

60         return list;

61     }

62 

63 }

消息适配器↓

 1 package com.wangzhen.adapter;

 2 

 3 import java.util.List;

 4 

 5 import com.wangzhen.bean.NewsBean;

 6 import com.wangzhen.pulltorefresh.R;

 7 

 8 import android.content.Context;

 9 import android.view.LayoutInflater;

10 import android.view.View;

11 import android.view.ViewGroup;

12 import android.widget.BaseAdapter;

13 import android.widget.ImageView;

14 import android.widget.TextView;

15 

16 /**

17  * 新闻适配器

18  * 

19  * @author Administrator

20  * 

21  */

22 public class MessageAdapter extends BaseAdapter {

23 

24     Context mContext;

25     LayoutInflater mInflater;

26 

27     List<NewsBean> mData = null;

28 

29     public MessageAdapter(Context context, List<NewsBean> list) {

30         mContext = context;

31         mInflater = LayoutInflater.from(mContext);

32         mData = list;

33     }

34 

35     /**

36      * 增加数据源

37      * 

38      * @param data

39      */

40     public void AddData(List<NewsBean> list) {

41         for (NewsBean bean : list) {

42             this.mData.add(bean);

43         }

44     }

45 

46     @Override

47     public int getCount() {

48         // TODO Auto-generated method stub

49         return mData.size();

50     }

51 

52     @Override

53     public NewsBean getItem(int position) {

54         // TODO Auto-generated method stub

55         return mData.get(position);

56     }

57 

58     @Override

59     public long getItemId(int position) {

60         // TODO Auto-generated method stub

61         return position;

62     }

63 

64     @Override

65     public View getView(int position, View convertView, ViewGroup parent) {

66         ViewHolder holder;

67         if (convertView == null) {

68             holder = new ViewHolder();

69             convertView = mInflater.inflate(R.layout.item_layout, null);

70             holder.mImageView_Icon = (ImageView) convertView

71                     .findViewById(R.id.ImageView_Icon);

72             holder.mTextView_Title = (TextView) convertView

73                     .findViewById(R.id.TextView_Title);

74             holder.mTextView_Content = (TextView) convertView

75                     .findViewById(R.id.TextView_Content);

76             convertView.setTag(holder);

77 

78         } else {

79             holder = (ViewHolder) convertView.getTag();

80         }

81 

82         holder.mImageView_Icon.setImageResource(R.drawable.ic_launcher);

83         holder.mTextView_Title.setText(mData.get(position).getNewsTitle());

84         holder.mTextView_Content.setText(mData.get(position).getNewsContent());

85 

86         return convertView;

87     }

88 

89     class ViewHolder {

90         ImageView mImageView_Icon;

91         TextView mTextView_Title;

92         TextView mTextView_Content;

93     }

94 

95 }

实体类↓

 1 package com.wangzhen.bean;

 2 

 3 /**

 4  * 实体类

 5  * 

 6  * @author Administrator

 7  * 

 8  */

 9 public class NewsBean {

10 

11     private String NewsImageURL;

12     private String NewsTitle;

13     private String NewsContent;

14 

15     public String getNewsImageURL() {

16         return NewsImageURL;

17     }

18 

19     public void setNewsImageURL(String newsImageURL) {

20         NewsImageURL = newsImageURL;

21     }

22 

23     public String getNewsTitle() {

24         return NewsTitle;

25     }

26 

27     public void setNewsTitle(String newsTitle) {

28         NewsTitle = newsTitle;

29     }

30 

31     public String getNewsContent() {

32         return NewsContent;

33     }

34 

35     public void setNewsContent(String newsContent) {

36         NewsContent = newsContent;

37     }

38 

39 }

 

你可能感兴趣的:(refresh)