Android下拉刷新SwipeRefreshLayout控件的简单使用

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);
    }
发布了20 篇原创文章 · 获赞 25 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/u014772414/article/details/51165818