1、ListView自定义控件下拉刷新(一)

1、ListView自定义控件下拉刷新(一)_第1张图片1、ListView自定义控件下拉刷新(一)_第2张图片

 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

你可能感兴趣的:(ListView)