刷新和加载更多
来源:互联网 发布:js怎么获取数据库数据 编辑:程序博客网 时间:2024/05/16 06:59
/**
*这个只是本人做的一个简单的刷新加载如果想看更多信息请点击下方链接进入
*http://www.jianshu.com/p/e2e142a07c2a
*/
//首先我们先在build.gradle导入包(本人用的是recyclerview,也可以使用listview或者是gridview)
compile 'com.cjj.materialrefeshlayout:library:1.3.0'compile 'com.android.support:recyclerview-v7:25.3.0'
//接下来我们就在main.xml中设置
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.bwei.myhome.MainActivity"> <com.cjj.MaterialRefreshLayout android:id="@+id/refresh" android:layout_width="match_parent" android:layout_height="wrap_content" app:overlay="true" app:wave_show="true" app:wave_color="@color/material_green" app:wave_height_type="higher"> <android.support.v7.widget.RecyclerView android:id="@+id/rv" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </com.cjj.MaterialRefreshLayout></LinearLayout>
//效果图
//接下来就要开始写代码了
private MaterialRefreshLayout refreshLayout;private RecyclerView rv;private List<String> list;private MyAdapter myAdapter;private boolean isLoadMore = true;/** * 一个承接数据的数组 */private List<String> mList = new ArrayList<>();@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData();}private void initData() { list = new ArrayList<>(); for (int i=0;i<10;i++){ list.add(""+i); } rv.setLayoutManager(new LinearLayoutManager(this)); myAdapter = new MyAdapter(MainActivity.this,list); rv.setAdapter(myAdapter); refreshLayout.setLoadMore(true); refreshLayout.setMaterialRefreshListener(new MaterialRefreshListener() { //刷新 @Override public void onRefresh(MaterialRefreshLayout materialRefreshLayout) { //一般加载数据都是在子线程中,这里我用到了handler new Handler().postDelayed(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, "已经没有更多数据了", Toast.LENGTH_SHORT).show(); /** * 刷新完成后调用此方法,要不然刷新效果不消失 */ refreshLayout.finishRefresh(); } }, 3000); } //加载更多 @Override public void onRefreshLoadMore(MaterialRefreshLayout materialRefreshLayout) { new Handler().postDelayed(new Runnable() { @Override public void run() { isLoadMore=false; for (int i = 0; i < 3; i++) { mList.add(i, "new City " + i); } //通知刷新 myAdapter.addLists(myAdapter.getLists().size(), mList); //mRecyclerView.scrollToPosition(mAdapter.getLists().size()); /** * 完成加载数据后,调用此方法,要不然刷新的效果不会消失 */ refreshLayout.finishRefreshLoadMore(); } }, 3000); } });}private void initView() { refreshLayout = (MaterialRefreshLayout) findViewById(R.id.refresh); rv = (RecyclerView) findViewById(R.id.rv);}
//下面是MyAdapter中的代码
private Context context;private List<String> list;public interface OnItemClickLitener{ void onItemClick(View view, int position); void onItemLongClick(View view , int position);}private OnItemClickLitener mOnItemClickLitener;public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener){ this.mOnItemClickLitener = mOnItemClickLitener;}public MyAdapter(Context context, List<String> list) { this.context = context; this.list = list;}@Overridepublic MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { MyViewHolder holder = new MyViewHolder(LayoutInflater.from( context).inflate(R.layout.item, viewGroup, false)); return holder;}@Overridepublic void onBindViewHolder(final MyAdapter.MyViewHolder holder, int i) { holder.tv.setText("item"+list.get(i)); // 如果设置了回调,则设置点击事件 if (mOnItemClickLitener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int pos = holder.getLayoutPosition(); mOnItemClickLitener.onItemClick(holder.itemView, pos); } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { int pos = holder.getLayoutPosition(); mOnItemClickLitener.onItemLongClick(holder.itemView, pos); return false; } }); }}@Overridepublic int getItemCount() { return list.size();}class MyViewHolder extends RecyclerView.ViewHolder{ private TextView tv; public MyViewHolder(View view) { super(view); tv = (TextView) view.findViewById(R.id.tv); }}/** * 对以下方法的复用 * @param lists */public void addLists(List<String> lists) { addLists(0, lists);}/** * 添加数据 * @param position 添加的位置 * @param lists 添加的数据 */public void addLists(int position, List<String> lists) { //mLists = lists; if (lists != null && lists.size() > 0) { list.addAll(lists); /** * Notify any registered observers that the <code>itemCount</code> items starting at * position <code>positionStart</code> have changed. * * 通知item是从哪个地方到哪个地方已经改变了 */ notifyItemRangeChanged(position, lists.size()); }}/** * mLists集合的get方法 通过他可以取得数据的size(); * @return */public List<String> getLists() { return list;}
//下面是item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:gravity="center" android:textSize="20sp" android:textColor="#000000" android:text="0000" android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
//最终效果图
/**
*自我感觉还是挺好用的,如果出现什么问题,可以在下方评论
*来看博客的兄弟姐妹们给个赞
*/
0 0
- 刷新和加载更多
- 下拉刷新和加载更多
- Android ListView列表 刷新和加载更多
- 下拉刷新和上拉加载更多
- Android-PullToRefresh:下拉刷新和加载更多
- Android ListView列表 刷新和加载更多
- 自定义下拉刷新和加载更多_Android
- RecyclerView下拉刷新和加载更多
- recyclerview下拉刷新和加载更多
- 171.n1-下拉刷新和加载更多
- RecyclerView下拉刷新和加载更多
- 上拉加载更多和下拉刷新
- listview刷新、加载更多
- 下拉刷新--加载更多
- DropDownListView下拉刷新和上拉加载和没有更多
- Recyclerview 加载更多 EndlessRecyclerViewScrollListener 和 SwipeRefreshLayout刷新后 无法加载更多
- iOS 下拉刷新和上拉加载更多
- 下拉刷新和上拉加载更多实现方法
- 简单ListView列表,就用简单的写法
- WINDOWS访问SAMBA提示没有权限
- Html和css常用个别英语单词
- 常用排序算法代码整理
- c语言与文件处理基础
- 刷新和加载更多
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(4)-- 变量和数组
- go语言测试test
- ~使用两个队列实现一个栈~
- [smoj 1022]位置
- html 中 form 的应用
- Attacks on TCP/IP Protocols (Task3) SYN Flooding Attack
- java基础******银行存款
- Java jdk 1.7安装