美文网首页
SwipeRefreshLayout(下拉刷新)

SwipeRefreshLayout(下拉刷新)

作者: 蛋蛋不哭 | 来源:发表于2016-04-24 13:19 被阅读918次

    简介:

    Google自己的下拉刷新组件SwipeRefreshLayout
    注:首先须把你的support library的版本升级到19.1或更新

    • 布局文件

        <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/swipeLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <ListView
                android:id="@+id/listview"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
            </ListView>
            
        </android.support.v4.widget.SwipeRefreshLayout>
    
    • 代码文件

    public class MainActivity extends  Activity
                implements SwipeRefreshLayout.OnRefreshListener{
    
        //Google官方推出的一款下拉刷新组件
        private SwipeRefreshLayout sRefreshLayout;;
        private ListView lv;
        private ArrayAdapter<String> mAdapter;
        private ArrayList<String> data;
        private boolean isRefresh = false;//是否刷新中
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            iviview();//空间初始化
            //设置SwipeRefreshLayout
            sRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeLayout);
            //设置进度条的颜色主题,最多能设置四种,加载颜色是循环播放的,只要没有完成刷新就会一直循环.
            sRefreshLayout.setColorSchemeColors(Color.YELLOW,
                    Color.GREEN,
                    Color.BLUE,
                    Color.RED);
            /*
             * 设置一系列sRefreshLayout属性
             * 设置手指在屏幕下拉多少距离会触发下拉刷新
             */
            
    //        sRefreshLayout.setDistanceToTriggerSync(300);
    //        // 设定下拉圆圈的背景
    //        sRefreshLayout.setProgressBackgroundColorSchemeColor(Color.WHITE);
    //        // 设置圆圈的大小
    //        sRefreshLayout.setSize(SwipeRefreshLayout.LRGE); 
            //设置下拉刷新的监听
            sRefreshLayout.setOnRefreshListener(this);
        }
        //初始化
        private void iviview() {
            lv = (ListView) findViewById(R.id.listview);
            data = new ArrayList<String>();
            //遍历集合
            for(int i=0;i<8;i++){
                 data.add("第 " + i + " 个Item");
            }
            //初始化Adapter
            mAdapter = new ArrayAdapter<String>(MainActivity.this,
                    android.R.layout.simple_list_item_1, data);
            lv.setAdapter(mAdapter);
        }
        
        /*
         * 监听器SwipeRefreshLayout.OnRefreshListener中的方法,当下拉刷新后触发
         */
         public void onRefresh() {
                //检查是否处于刷新状态
                if (!isRefresh) {
                    isRefresh = true;
                    //模拟加载网络数据,这里设置2秒,能看到4色进度条
                    new Handler().postDelayed(new Runnable() {
                        public void run() {
    
                            //显示或隐藏刷新进度条
                            sRefreshLayout.setRefreshing(false);
                            //修改adapter的数据
                            data.add("新添加的Item");
                            mAdapter.notifyDataSetChanged();
                            isRefresh = false;
                        }
                    }, 2000);
                }
            }
    }
    
    • 演示

    Refresh.gif
    • 注:

      这种情况是版本问题:(建议用AS来做)
    版本question.jpg

    借鉴yungfan同志。。。

    相关文章

      网友评论

          本文标题:SwipeRefreshLayout(下拉刷新)

          本文链接:https://www.haomeiwen.com/subject/pxjfrttx.html