1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 android:background="#f5f5f5" > 5 6 <zrc.widget.ZrcListView 7 android:id="@+id/zListView" 8 android:layout_width="match_parent" 9 android:layout_height="match_parent" > 10 </zrc.widget.ZrcListView> 11 12 <RelativeLayout 13 android:layout_width="match_parent" 14 android:layout_height="50dp" 15 android:layout_alignParentTop="true" 16 android:background="#ccffffff" > 17 18 <TextView 19 android:layout_width="wrap_content" 20 android:layout_height="wrap_content" 21 android:layout_centerInParent="true" 22 android:text="常见国家" 23 android:textSize="20sp" /> 24 25 <View 26 android:layout_width="match_parent" 27 android:layout_height="1px" 28 android:layout_alignParentBottom="true" 29 android:layout_centerHorizontal="true" 30 android:background="#cccccc" /> 31 32 </RelativeLayout> 33 34 </RelativeLayout>
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 }
开源ListView自定义下载:http://download.csdn.net/detail/androidsj/7948481