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
本文详细介绍了Android中SwipeRefreshLayout组件的使用方法,包括如何在布局文件中配置该组件,如何在代码中进行初始化和设置监听器,以及如何通过SwipeRefreshLayout实现下拉刷新功能。文章还提供了一个完整的示例,展示了如何在一个包含RecyclerView的Activity中使用SwipeRefreshLayout。

被折叠的 条评论
为什么被折叠?



