学习google最新下拉刷新控件SwipeRefreshLayout

来源:互联网 发布:ios降级会清除数据吗 编辑:程序博客网 时间:2024/04/18 23:32

(通过SwipeRefreshLayout实现ListView下拉刷新上拉加载数据)

今天偶然地看到了google下拉刷新控件SwipeRefreshLayout,于是乎想去了解下,在使用之前请先打开SDK Manager.exe管理程序更新Android Support Library(android.support.v4.jar)到19.1

说到下拉刷新我想大家都会想到ActionBarPullToRefresh开源项目。不过现在Google官方也发布下拉刷新控件SwipeRefreshLayout。个人觉得可以学习。

SwipeRefreshLayout官方文档网址:http://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html。其中有针对本下拉刷新控件详细的说明。重点的是要实现内部接口SwipeRefreshLayout.OnRefreshListener。

简单的Demo如下:

layout:

code:<span style="font-size: 18px;">public class MainActivity extends Activity implements OnRefreshListener, OnScrollListener {private SwipeRefreshLayoutmRefreshLayout;private ListViewmListview;private ViewfootView;private ArrayAdapter<string>mArrayAdapter;private List<string>mListBeans= new ArrayList<string>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main_view);initViews();initParams();initListeners();}private void initViews() {mRefreshLayout = (SwipeRefreshLayout) this.findViewById(R.id.swipe_container);mListview = (ListView) this.findViewById(R.id.listview);footView = View.inflate(this, R.layout.footer_view, null);}private void initParams() {mRefreshLayout.setColorScheme(R.color.holo_blue_bright, R.color.holo_green_light, R.color.holo_orange_light, R.color.holo_red_light);mListBeans.addAll(getData("Layout"));mArrayAdapter = new ArrayAdapter<string>(this, android.R.layout.simple_list_item_1, mListBeans);mListview.addFooterView(footView);mListview.setAdapter(mArrayAdapter);}private void initListeners() {mRefreshLayout.setOnRefreshListener(this);mListview.setOnScrollListener(this);}@Overridepublic void onRefresh() {new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {@Overridepublic void run() {mRefreshLayout.setRefreshing(false);mListBeans.clear();mListBeans.addAll(getData("onRefresh"));mArrayAdapter.notifyDataSetChanged();}}, 1500);}@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {if (firstVisibleItem + visibleItemCount >= totalItemCount) {new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {@Overridepublic void run() {mListBeans.addAll(getData("onScroll"));mArrayAdapter.notifyDataSetChanged();}}, 3000);}}//加载数据private List<string> getData(String type) {List<string> lists = new ArrayList<string>();for (int i = 0; i < 10; i++) {lists.add(type + "->Item->" + (i + 1));}return lists;}}</string></string></string></string></string></string></string></span>

0 0
原创粉丝点击