优秀的RecyclerView框架加下拉刷新,上拉加载


//首先在progect下加依赖
buildscript {
    
    repositories {
        google()
        jcenter()
        mavenCentral() // add repository
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'

        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
    }
}
//再在module下加依赖

implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'//万能RecyclerView适配器


implementation 'com.android.support:recyclerview-v7:26.1.0'



implementation 'com.squareup.picasso:picasso:2.5.2'
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1'
implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.5.1'//没有使用特殊Header,可以不加这行











import android.content.Intent; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.PopupWindow; import android.widget.TextView; import android.widget.Toast; import com.android.volley.AuthFailureError; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.Volley; import com.chad.library.adapter.base.BaseQuickAdapter; import com.google.gson.Gson; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.constant.SpinnerStyle; import com.scwang.smartrefresh.layout.footer.BallPulseFooter; import com.scwang.smartrefresh.layout.header.ClassicsHeader; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; import java.util.ArrayList; import java.util.List; import java.util.Map; import butterknife. BindView; import butterknife.ButterKnife; import db.myrecy.R; import db.myrecy.adapter.MyAdapter; import db.myrecy.utils.dao.StudentsDao; import db.myrecy.data.bean.Bean; import db.myrecy.data.bean.MyBean; import db.myrecy.data.common.Constant; import db.myrecy.utils.dbutil.App; public class MainActivity extends AppCompatActivity { @BindView(R.id. tbr) Toolbar tbr; @BindView(R.id. rcw) RecyclerView rcw; @BindView(R.id. refreshLayout) SmartRefreshLayout refreshLayout; private List<Bean.ResultsBean> list; private List<MyBean> myBeans = new ArrayList<>(); private MyAdapter adapter; private int size; private int count; private Intent intent; private StudentsDao dao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout. activity_main); ButterKnife. bind( this); dao = App. getDB( this); initData(); //initDataHttp(); } private void initDataHttp() { Volley. newRequestQueue( this).add( new StringRequest(Request.Method. POST, Constant. URL, new Response.Listener<String>() { @Override public void onResponse(String response) { } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { return super.getParams(); } }); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == 1) { startActivityForResult( new Intent(MainActivity. this, AddActivity. class), 11); } return super.onOptionsItemSelected(item); } @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add( 1, 1, 1, "添加数据"); return super.onCreateOptionsMenu(menu); } Handler handler = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { if ( adapter == null) { Toast. makeText(MainActivity. this, "没有数据数据", Toast. LENGTH_SHORT).show(); return; } else { count = adapter.getItemCount(); } if ( adapter.getItemCount() == size) { Toast. makeText(MainActivity. this, "没有更多了", Toast. LENGTH_SHORT).show(); } if ( count + 5 < size) { for ( int i = count; i < count + 5; i++) { getMyBean(i); } } else { for ( int i = count; i < size; i++) { getMyBean(i); } } adapter.notifyDataSetChanged(); } }; private List<String> images; private void initData() { //setSupportActionBar(tbr); rcw.setLayoutManager( new StaggeredGridLayoutManager( 2, StaggeredGridLayoutManager. VERTICAL)); Volley. newRequestQueue( this).add( new StringRequest(Constant. URL, new Response.Listener<String>() { @Override public void onResponse(String response) { list = new Gson().fromJson(response, Bean. class).getResults(); size = list.size(); for ( int i = count; i < 2; i++) { getMyBean(i); } adapter = new MyAdapter(R.layout. item, myBeans); rcw.setAdapter( adapter); initListener(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } })); refreshLayout.setRefreshHeader( new ClassicsHeader( this)); //设置 Footer 为 球脉冲 样式 refreshLayout.setRefreshFooter( new BallPulseFooter( this).setSpinnerStyle(SpinnerStyle. Scale)); // refreshLayout.setRefreshFooter(new ClassicsFooter(this).setSpinnerStyle(SpinnerStyle.Scale)); // refreshLayout.setReboundDuration(100); // refreshLayout.setScrollBarFadeDuration(100); refreshLayout.setOnRefreshListener( new OnRefreshListener() { @Override public void onRefresh(RefreshLayout refreshlayout) { handler.postDelayed( runnable, 10); refreshlayout.finishRefresh( 1000 /*,false*/); //传入false表示刷新失败 } }); refreshLayout.setOnLoadMoreListener( new OnLoadMoreListener() { @Override public void onLoadMore(RefreshLayout refreshlayout) { handler.postDelayed( runnable, 10); //Toast.makeText(MainActivity.this, "加载完成", Toast.LENGTH_SHORT).show(); refreshlayout.finishLoadMore( 1000 /*,false*/); //传入false表示加载失败 } }); } private void initListener() { adapter.setOnItemClickListener( new BaseQuickAdapter.OnItemClickListener() { private Button n; private Button y; private TextView title; private View inflate; @Override public void onItemClick(BaseQuickAdapter adapter, View view, final int position) { final PopupWindow window = new PopupWindow(); window.setWidth(RecyclerView.LayoutParams. WRAP_CONTENT); window.setHeight(RecyclerView.LayoutParams. WRAP_CONTENT); window.setOutsideTouchable( true); window.setBackgroundDrawable( new ColorDrawable()); inflate = View. inflate(MainActivity. this, R.layout. popu, null); title = inflate.findViewById(R.id. title); n = inflate.findViewById(R.id. n); y = inflate.findViewById(R.id. y); title.setText( "是否添加数据库?"); y.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { intent = new Intent(MainActivity. this, DBActivity. class); intent.putExtra( "key", myBeans.get( position)); startActivity( intent); } }); n.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { window.dismiss(); } }); window.setContentView( inflate); window.showAsDropDown(view); } }); } private void getMyBean( int i) { if ( list != null) { if ( list.get(i).getImages() != null) { images = list.get(i).getImages(); } else { images = null; } myBeans.add( new MyBean( list.get(i).getUrl(), images, list.get(i).getCreatedAt(), list.get(i).getDesc())); } }}

import android.support.annotation.Nullable;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.recker.flybanner.FlyBanner;

import java.util.List;

import db.myrecy.R;
import db.myrecy.data.bean.MyBean;

/**
 * Created by Lenovo on 2018/06/04.
 */

public class MyAdapter extends BaseQuickAdapter<MyBean,BaseViewHolder> {
    public MyAdapter(int layoutResId, @Nullable List<MyBean> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, MyBean item) {
            helper.setText(R.id.time,item.getTime());
            helper.setText(R.id.content,item.getContent());
            WebView webView= helper.getView(R.id.wvw);
           webView.getSettings().setJavaScriptEnabled(true);
           webView.loadUrl(item.getUrl());
           webView.setWebViewClient(new WebViewClient(){
               @Override
               public boolean shouldOverrideUrlLoading(WebView view, String url) {
                   view.loadUrl(url);
                   return true;
               }
           });
        FlyBanner fbnr= helper.getView(R.id.fbnr);
        if(item.getImgs()!=null){
            fbnr.setImagesUrl(item.getImgs());

            fbnr.startAutoPlay();
        }


    }
}

猜你喜欢

转载自blog.csdn.net/qq_42120002/article/details/80674406