1.普通View下拉刷新,上拉加载更多
DemoMainActivity-->PullToRefreshActivity-->PullToRefreshViewActivityPullToRefreshViewActivity实现了两个接口
implements OnHeaderRefreshListener,OnFooterLoadListener
核心类:AbPullToRefreshView:可滑动的View
setOnHeaderRefreshListener:设置头部刷新事件
setOnFooterLoadListener:设置底部刷新事件
onHeaderRefreshFinish:头部加载完毕
onFooterLoadFinish:底部加载完毕
1)xml
<?xml version="1.0" encoding="utf-8"?>
<com.ab.view.pullview.AbPullToRefreshView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mPullRefreshView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/gray_white" >
<ScrollView
android:id="@+id/mScrollview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#00000000" >
<TextView
android:id="@+id/mTextView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:gravity="center"
android:text="下拉看看吧"
android:textSize="15sp" />
</ScrollView>
</com.ab.view.pullview.AbPullToRefreshView>
2)代码
public class PullToRefreshViewActivity extends AbActivity implements AbPullToRefreshView.OnHeaderRefreshListener,AbPullToRefreshView.OnFooterLoadListener{
private AbPullToRefreshView mAbPullToRefreshView = null;
private TextView mTextView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setAbContentView(R.layout.activity_pull_to_refresh_view);
//1)获取View对象
mAbPullToRefreshView = (AbPullToRefreshView)this.findViewById(R.id.mPullRefreshView);
mTextView = (TextView)this.findViewById(R.id.mTextView);
//2)设置监听器
mAbPullToRefreshView.setOnHeaderRefreshListener(this);
mAbPullToRefreshView.setOnFooterLoadListener(this);
}
//头部刷新
@Override
public void onHeaderRefresh(AbPullToRefreshView abPullToRefreshView) {
mTextView.setText("This is "+new Random().nextInt(100));
mAbPullToRefreshView.onHeaderRefreshFinish();
}
//底部加载
@Override
public void onFooterLoad(AbPullToRefreshView abPullToRefreshView) {
mTextView.setText("This is "+new Random().nextInt(100));
mAbPullToRefreshView.onFooterLoadFinish();
}
}
2.ListView 下拉刷新分页
1)xml
<?xml version="1.0" encoding="utf-8"?>
<com.ab.view.pullview.AbPullToRefreshView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mPullRefreshView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/gray_white">
<ListView
android:id="@+id/mListView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#00000000"
android:dividerHeight="1px" />
</com.ab.view.pullview.AbPullToRefreshView>
2)代码
public class PullToRefreshListActivity extends AbActivity implements AbPullToRefreshView.OnHeaderRefreshListener,
AbPullToRefreshView.OnFooterLoadListener{
private AbPullToRefreshView mAbPullToRefreshView = null;
private List<Map<String,Object>> list = null;
private ListView mListView = null;
private ArrayList<String> mPhotoList = new ArrayList<String>();
private ImageListAdapter myListViewAdapter = null;
private int total = 50;
private int pageSize = 15;
private int currentPage = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setAbContentView(R.layout.activity_pull_to_refresh_list);
for (int i = 1; i < 23; i++) {
mPhotoList.add("http://192.168.42.155:8080/" + i + ".png");
}
//1)获取listView对象
mAbPullToRefreshView = (AbPullToRefreshView)this.findViewById(R.id.mPullRefreshView);
mListView = (ListView)this.findViewById(R.id.mListView);
//2)设置监听器
mAbPullToRefreshView.setOnHeaderRefreshListener(this);
mAbPullToRefreshView.setOnFooterLoadListener(this);
//ListView数据
list = new ArrayList<Map<String, Object>>();
//使用自定义的Adapter
myListViewAdapter = new ImageListAdapter(this, list,
R.layout.item_list, new String[] { "itemsIcon", "itemsTitle",
"itemsText" }, new int[] { R.id.itemsIcon,
R.id.itemsTitle, R.id.itemsText });
mListView.setAdapter(myListViewAdapter);
}
@Override
public void onHeaderRefresh(AbPullToRefreshView abPullToRefreshView) {
//更新数据,每次更新15条
List<Map<String,Object>> newList = null;
currentPage = 1;
newList = new ArrayList<Map<String,Object>>();
Map<String,Object> map = null;
for(int i=0; i<pageSize; i++){
map = new HashMap<String,Object>();
map.put("itemsIcon", mPhotoList.get(i));
map.put("itemsTitle", "item" + (i + 1));
map.put("itemsText", "item..." + (i + 1));
newList.add(map);
}
list.clear();
if(newList!=null && newList.size()>0){
list.addAll(newList);
myListViewAdapter.notifyDataSetChanged();//更新listView
newList.clear();
}
mAbPullToRefreshView.onHeaderRefreshFinish();
}
@Override
public void onFooterLoad(AbPullToRefreshView abPullToRefreshView) {
List<Map<String, Object>> newList = null;
newList = new ArrayList<Map<String, Object>>();
Map<String, Object> map = null;
currentPage++;
for (int i = 1; i < pageSize; i++) {
map = new HashMap<String, Object>();
map.put("itemsIcon", mPhotoList.get(i));
map.put("itemsTitle", "item上拉"
+ ((currentPage - 1) * pageSize + (i + 1)));
map.put("itemsText", "item上拉..."
+ ((currentPage - 1) * pageSize + (i + 1)));
if ((list.size() + newList.size()) < total) {
newList.add(map);
}
}
if (newList != null && newList.size() > 0) {
list.addAll(newList);
myListViewAdapter.notifyDataSetChanged();
newList.clear();
}
mAbPullToRefreshView.onFooterLoadFinish();
}
}