1 import java.util.ArrayList;
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.os.Handler;
6 import android.view.View;
7 import android.view.ViewGroup;
8 import android.widget.BaseAdapter;
9 import android.widget.TextView;
11 import zrc.widget.SimpleFooter;
12 import zrc.widget.SimpleHeader;
13 import zrc.widget.ZrcListView;
14 import zrc.widget.ZrcListView.OnStartListener;
15
16 public class MainActivity extends Activity {
17 private ZrcListView listView;
18 private Handler handler;
19 private ArrayList<String> msgs;
20 private int pageId = -1;
21 private MyAdapter adapter;
22
23 private static final String[][] names = new String[][]{
24 {"加拿大","瑞典","澳大利亚","瑞士","新西兰","挪威","丹麦","芬兰","奥地利","荷兰","德国","日本","比利时","意大利","英国"},
25 {"德国","西班牙","爱尔兰","法国","葡萄牙","新加坡","希腊","巴西","美国","阿根廷","波兰","印度","秘鲁","阿联酋","泰国"},
26 {"智利","波多黎各","南非","韩国","墨西哥","土耳其","埃及","委内瑞拉","玻利维亚","乌克兰"},
27 {"以色列","海地","中国","沙特阿拉伯","俄罗斯","哥伦比亚","尼日利亚","巴基斯坦","伊朗","伊拉克"}
28 };
29
30 @Override
31 protected void onCreate(Bundle savedInstanceState) {
32 super.onCreate(savedInstanceState);
33 setContentView(R.layout.activity_main);
34
35 listView = (ZrcListView) findViewById(R.id.zListView);
36 handler = new Handler();
37
38 // 设置默认偏移量,主要用于实现透明标题栏功能。(可选)
39 float density = getResources().getDisplayMetrics().density;
40 listView.setFirstTopOffset((int) (50 * density));
41
42 // 设置下拉刷新的样式(可选,但如果没有Header则无法下拉刷新)
43 SimpleHeader header = new SimpleHeader(this);
44 header.setTextColor(0xff0066aa);
45 header.setCircleColor(0xff33bbee);
46 listView.setHeadable(header);
47
48 // 设置加载更多的样式(可选)
49 SimpleFooter footer = new SimpleFooter(this);
50 footer.setCircleColor(0xff33bbee);
51 listView.setFootable(footer);
52
53 // 设置列表项出现动画(可选)
54 listView.setItemAnimForTopIn(R.anim.topitem_in);
55 listView.setItemAnimForBottomIn(R.anim.bottomitem_in);
56
57 // 下拉刷新事件回调(可选)
58 listView.setOnRefreshStartListener(new OnStartListener() {
59 @Override
60 public void onStart() {
61 refresh();
62 }
63 });
64
65 // 加载更多事件回调(可选)
66 listView.setOnLoadMoreStartListener(new OnStartListener() {
67 @Override
68 public void onStart() {
69 loadMore();
70 }
71 });
72
73 adapter = new MyAdapter();
74 listView.setAdapter(adapter);
75 listView.refresh(); // 主动下拉刷新
76 }
77
78 private void refresh(){
79 handler.postDelayed(new Runnable() {
80 @Override
81 public void run() {
82 // 随机数模拟成功失败。这里从有数据开始。
83 int rand = (int) (Math.random() * 2);
84 if(rand == 0 || pageId == -1){
85 pageId = 0;
86 msgs = new ArrayList<String>();
87 for(String name:names[0]){
88 msgs.add(name);
89 }
90 adapter.notifyDataSetChanged();
91 listView.setRefreshSuccess("加载成功"); // 通知加载成功
92 listView.startLoadMore(); // 开启LoadingMore功能
93 }else{
94 listView.setRefreshFail("加载失败");
95 }
96 }
97 }, 2 * 1000);
98 }
99
100 private void loadMore(){
101 handler.postDelayed(new Runnable() {
102 @Override
103 public void run() {
104 pageId++;
105 if(pageId<names.length){
106 for(String name:names[pageId]){
107 msgs.add(name);
108 }
109 adapter.notifyDataSetChanged();
110 listView.setLoadMoreSuccess();
111 }else{
112 listView.stopLoadMore();
113 }
114 }
115 }, 2 * 1000);
116 }
117
118 private class MyAdapter extends BaseAdapter{
119 @Override
120 public int getCount() {
121 return msgs==null ? 0 : msgs.size();
122 }
123 @Override
124 public Object getItem(int position) {
125 return msgs.get(position);
126 }
127
128 @Override
129 public long getItemId(int position) {
130 return position;
131 }
132
133 @Override
134 public View getView(int position, View convertView, ViewGroup parent) {
135 TextView textView;
136 if(convertView==null) {
137 textView = (TextView) getLayoutInflater().inflate(android.R.layout.simple_list_item_1, null);
138 }else{
139 textView = (TextView) convertView;
140 }
141 textView.setText(msgs.get(position));
142 return textView;
143 }
144 }
145 }