找到一个封装好的下拉刷新加载更多的源码,适合新手学习
下载链接:点击打开链接
首先在项目中依赖封装好的ZrcListView,这里没有打成jar包,需要依赖下
然后代码开始
public class MainActivity extends Activity {
private ZrcListView listView;
private Handler handler;
private ArrayList<Student> msgs;
private int pageId = -1;
private MyAdapter adapter;
private static List<Student> list = new ArrayList<Student>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
<span style="white-space:pre"> </span>//这里动态往list中加入测试数据
for (int i = 0; i < 20; i++) {
Student student = new Student();
student.setAge(i+"岁");
student.setName("张三"+i);
list.add(student);
}
listView = (ZrcListView) findViewById(R.id.zListView);
handler = new Handler();
// 设置默认偏移量,主要用于实现透明标题栏功能。(可选)
float density = getResources().getDisplayMetrics().density;
listView.setFirstTopOffset((int) (50 * density));
// 设置下拉刷新的样式(可选,但如果没有Header则无法下拉刷新)
SimpleHeader header = new SimpleHeader(this);
header.setTextColor(0xff0066aa);
header.setCircleColor(0xff33bbee);
listView.setHeadable(header);
// 设置加载更多的样式(可选)
SimpleFooter footer = new SimpleFooter(this);
footer.setCircleColor(0xff33bbee);
listView.setFootable(footer);
// 设置列表项出现动画(可选)
listView.setItemAnimForTopIn(R.anim.topitem_in);
listView.setItemAnimForBottomIn(R.anim.bottomitem_in);
// 下拉刷新事件回调(可选)
listView.setOnRefreshStartListener(new OnStartListener() {
@Override
public void onStart() {
refresh();
}
});
// 加载更多事件回调(可选)
listView.setOnLoadMoreStartListener(new OnStartListener() {
@Override
public void onStart() {
loadMore();
}
});
adapter = new MyAdapter();
listView.setAdapter(adapter);
listView.refresh(); // 主动下拉刷新
}
首先进行一些基本的设置,及listview绑定适配器
接着就是下拉刷新和加载更多的回调
private class MyAdapter extends BaseAdapter{//定义适配器
@Override
public int getCount() {
return msgs==null ? 0 : msgs.size();
}
@Override
public Object getItem(int position) {
return msgs.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView;
if(convertView==null) {
textView = (TextView) getLayoutInflater().inflate(android.R.layout.simple_list_item_1, null);
}else{
textView = (TextView) convertView;
}
textView.setText(msgs.get(position).getName()+","+msgs.get(position).getAge());
return textView;
}
}
//用于测试存储数据的内部类
private class Student{
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
注释已经比较全了,就不多做解释,本人也是初学Android,大神勿喷!!!