SwipeRefreshLayout 谷歌官方下拉刷新控件
就是目前知乎的下拉刷新的效果.
layout文件中添加SwipeRefreshLayout控件,中间添加一个ListView
<android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipeRefreshLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView> </android.support.v4.widget.SwipeRefreshLayout>
然后我们先来初始化数据
private void initData() {
dataList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
dataList.add("T" + i);
}
}
然后初始化控件
先初始化SwipeRefreshLayout,然后初始化ListView。
这里介绍一个方法,设置下拉圈圈的颜色
先在color.xml文件中添加要使用的颜色
<color name="orange">#FF9900</color> <color name="red">#FF0000</color> <color name="green">#009900</color>
然后调用swipeRefreshLayout.setColorSchemeResources()方法即可
private void initView() {
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
//设置显示的颜色
swipeRefreshLayout.setColorSchemeResources(R.color.orange,R.color.red,R.color.green);
swipeRefreshLayout.setOnRefreshListener(this);
ListView lv = (ListView) findViewById(R.id.lv);
listAdapter = new ListAdapter(this,dataList);
lv.setAdapter(listAdapter);
}
ListView的Adapter的代码
package com.fsociety.swiperefreshdemo;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
import java.util.PriorityQueue;
/**
* Created by dzzchao on 2016/4/15 0015.
*/
public class ListAdapter extends BaseAdapter {
private Context mContext;
private List mDataList;
public ListAdapter(Context context, List<String> dataList) {
mContext = context;
mDataList = dataList;
}
/**
* 重新显示列表
*
* @param list list
*/
public void setList(List list) {
mDataList = list;
notifyDataSetChanged();
}
@Override
public int getCount() {
return mDataList.size();
}
@Override
public Object getItem(int position) {
return mDataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyViewHolder viewHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list, null);
viewHolder = new MyViewHolder();
viewHolder.tv = (TextView) convertView.findViewById(R.id.tv_list);
convertView.setTag(viewHolder);
} else {
viewHolder = (MyViewHolder) convertView.getTag();
}
viewHolder.tv.setText(getItem(position).toString());
return convertView;
}
class MyViewHolder {
TextView tv;
}
}
然后重写一个下拉刷新的监听方法
@Override
public void onRefresh() {
Toast.makeText(MainActivity.this, "下拉刷新", Toast.LENGTH_SHORT).show();
dataList.add(0,"和你在一起");
listAdapter.setList(dataList);
swipeRefreshLayout.setRefreshing(false);
}