《第一行代码》笔记(24)——SwipeRefreshLayout的简单使用

package com.zjw.myswiperefreshlayout;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.NavigationView;
import android.support.design.widget.Snackbar;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import butterknife.BindView;
import butterknife.ButterKnife;

//12.6 p440 下拉刷新
/*
SwipeRefreshLayout:
support-v4包
要实现下拉刷新的控件扔进去
改主布局(之前全部布局见CardView的使用):
         <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/srl"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">

            <android.support.v7.widget.RecyclerView
                android:id="@+id/recycler_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_margin="5dp"
                >
            </android.support.v7.widget.RecyclerView>

        </android.support.v4.widget.SwipeRefreshLayout>

改主类
 */

public class UseOfSwiperefreshlayout extends AppCompatActivity {

    @BindView(R.id.tb)
    Toolbar mTb;
    @BindView(R.id.navigation)
    NavigationView mNavigation;
    @BindView(R.id.dl)
    DrawerLayout mDl;
    @BindView(R.id.acb)
    FloatingActionButton mAcb;
    @BindView(R.id.recycler_view)
    RecyclerView mRecyclerView;
    @BindView(R.id.srl)
    SwipeRefreshLayout mSrl;

    //准备数据
    private String[] arr = {"apple", "banana", "orange", "watermelon",
            "pear", "grape", "pineapple", "strawberry", "cherry"
            , "mango", "apple", "banana", "orange", "watermelon",
            "pear", "grape", "pineapple", "strawberry", "cherry"
            , "mango"};
    private int[] arrId = {R.drawable.apple_pic, R.drawable.banana_pic, R.drawable.orange_pic, R.drawable.watermelon_pic,
            R.drawable.pear_pic, R.drawable.grape_pic, R.drawable.pineapple_pic, R.drawable.strawberry_pic, R.drawable.cherry_pic,
            R.drawable.mangp_pic, R.drawable.apple_pic, R.drawable.banana_pic, R.drawable.orange_pic, R.drawable.watermelon_pic,
            R.drawable.pear_pic, R.drawable.grape_pic, R.drawable.pineapple_pic, R.drawable.strawberry_pic, R.drawable.cherry_pic,
            R.drawable.mangp_pic};
    private List<Fruit> fruitList = new ArrayList<Fruit>();
    private FruitAdapter mFruitAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_use_of_swiperefreshlayout);
        ButterKnife.bind(this);

        setSupportActionBar(mTb);//设置标题栏

        ActionBar actionBar = getSupportActionBar();//获取标题栏
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);//显示HomeAsUp按钮
            actionBar.setHomeAsUpIndicator(R.mipmap.ic_drawer);//设置HomeAsUp按钮图标
        }

        //设置DrawerLayout的菜单布局Navigation
        mNavigation.setCheckedItem(R.id.holder);//设置默认选中项
        mNavigation.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                mDl.closeDrawers();
                return true;
            }
        });

        //给FloatingActionButton设置点击事件
        mAcb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Snackbar.make(v, "you clicked floatingActionBar", Snackbar.LENGTH_SHORT)
                        .setAction("showtoast", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                showToast("you clicked ...");
                            }
                        })
                        .show();
            }
        });

        //初始化水果数据
        initFruitData();
        //给recyclerView设置布局样式和适配器
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2);
        mRecyclerView.setLayoutManager(gridLayoutManager);
        mFruitAdapter = new FruitAdapter(fruitList);
        mRecyclerView.setAdapter(mFruitAdapter);

        //SwipeRefreshLayout设置
        mSrl.setColorSchemeResources(R.color.colorPrimary);//设置下拉刷新进度条颜色
        //下拉刷新监听
        mSrl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                refreshFruits();//刷新水果
            }
        });
    }

    //toolbar的menu
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.toolbar_menu, menu);
        return true;
    }

    //toolbar上各个按钮点击事件
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.up:
                showToast("you clicked up");
                break;
            case R.id.delete:
                showToast("you clicked delete");
                break;
            case R.id.add:
                showToast("you clicked add");
                break;
            case android.R.id.home:
                mDl.openDrawer(GravityCompat.START);
                break;
            default:
                break;
        }
        return true;
    }

    //弹吐司
    private Toast mToast;

    public void showToast(String msg) {
        if (mToast == null) {
            mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
        }
        mToast.setText(msg);
        mToast.show();
    }

    //初始化水果数据
    private void initFruitData() {
        fruitList.clear();
        for (int i = 0; i < 50; i++) {
            Random random = new Random();
            int index = random.nextInt(arr.length);
            Fruit fruit = new Fruit(arr[index], arrId[index]);
            fruitList.add(fruit);
        }
    }

    //刷新水果
    private void refreshFruits() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(2000);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        initFruitData();
                        mFruitAdapter.notifyDataSetChanged();
                        mSrl.setRefreshing(false);//刷新事件结束,隐藏刷新进度条
                    }
                });
            }
        }).start();
    }
}

转载于:https://my.oschina.net/u/3620480/blog/1501253

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值