国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

XRecyclerView實現下拉刷新、滾動到底部加載更多等功能

2019-10-22 18:31:12
字體:
來源:轉載
供稿:網友

介紹:
一個實現了下拉刷新,滾動到底部加載更多以及添加header功能的的RecyclerView。使用方式和RecyclerView完全一致,不需要額外的layout,不需要寫特殊的adater。 加載效果內置了AVLoadingIndicatorView上的所有效果,可以根據需要指定。

項目地址:https://github.com/jianghejie/XRecyclerView

效果:

XRecyclerView,下拉刷新,滾動加載

使用:

xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><com.jcodecraeer.xrecyclerview.XRecyclerViewandroid:id="@+id/recyclerview"android:layout_width="fill_parent"android:layout_height="fill_parent" /></RelativeLayout>

2.MainActivity

package com.example.xrecyclerview; import android.os.Bundle;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import com.jcodecraeer.xrecyclerview.ProgressStyle;import com.jcodecraeer.xrecyclerview.XRecyclerView;import java.util.ArrayList; public class MainActivity extends AppCompatActivity {private XRecyclerView mRecyclerView;private MyAdapter mAdapter;private ArrayList<String> listData;private int refreshTime = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mRecyclerView = (XRecyclerView)this.findViewById(R.id.recyclerview);LinearLayoutManager layoutManager = new LinearLayoutManager(this);layoutManager.setOrientation(LinearLayoutManager.VERTICAL);mRecyclerView.setLayoutManager(layoutManager);mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);mRecyclerView.setLaodingMoreProgressStyle(ProgressStyle.Pacman);mRecyclerView.setArrowImageView(R.drawable.iconfont_downgrey);View header = LayoutInflater.from(this).inflate(R.layout.recyclerview_header, (ViewGroup)findViewById(android.R.id.content),false);mRecyclerView.addHeaderView(header);mRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {@Overridepublic void onRefresh() {refreshTime ++;new Handler().postDelayed(new Runnable(){public void run() {listData.clear();for(int i = 0; i < 15 ;i++){listData.add("item" + i + "after " + refreshTime + " times of refresh");}mAdapter.notifyDataSetChanged();mRecyclerView.refreshComplete();}}, 3000);   //refresh data here} @Overridepublic void onLoadMore() {new Handler().postDelayed(new Runnable(){public void run() {for(int i = 0; i < 15 ;i++){listData.add("item" + (i + listData.size()) );}mAdapter.notifyDataSetChanged();mRecyclerView.loadMoreComplete();}}, 3000); }}); listData = new ArrayList<String>();mAdapter = new MyAdapter(listData);for(int i = 0; i < 15 ;i++){listData.add("item" + i);}mRecyclerView.setAdapter(mAdapter);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.menu_main, menu);return true;} @Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;} return super.onOptionsItemSelected(item);}  }

3. adapter

package com.example.xrecyclerview;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import java.util.ArrayList;/*** Created by jianghejie on 15/11/26.*/public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {public ArrayList<String> datas = null;public MyAdapter(ArrayList<String> datas) {this.datas = datas;}//創建新View,被LayoutManager所調用@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item,viewGroup,false);ViewHolder vh = new ViewHolder(view);return vh;}//將數據與界面進行綁定的操作@Overridepublic void onBindViewHolder(ViewHolder viewHolder, int position) {viewHolder.mTextView.setText(datas.get(position));}//獲取數據的數量@Overridepublic int getItemCount() {return datas.size();}//自定義的ViewHolder,持有每個Item的的所有界面元素public static class ViewHolder extends RecyclerView.ViewHolder {public TextView mTextView;public ViewHolder(View view){super(view);mTextView = (TextView) view.findViewById(R.id.text);}}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华池县| 伊通| 武定县| 昌黎县| 抚松县| 铜川市| 石棉县| 滁州市| 深水埗区| 阿图什市| 弋阳县| 类乌齐县| 滦平县| 加查县| 秦安县| 陕西省| 德州市| 中阳县| 北川| 资中县| 靖安县| 合肥市| 敦煌市| 和田市| 伊川县| 宜宾县| 曲水县| 乌海市| 裕民县| 新乐市| 和平区| 临桂县| 东乡族自治县| 龙游县| 夏邑县| 枞阳县| 潼南县| 东城区| 昔阳县| 杭州市| 修武县|