RecyclerView的上拉加载下拉刷新和viewpager自动有点无限轮播




//main.xml


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="wangziying.baway.com.wangyue.MainActivity">

   <com.youth.banner.Banner
       xmlns:app="http://schemas.android.com/apk/res-auto"
       android:id="@+id/banner"
       android:layout_width="match_parent"
       android:layout_height="220dp" />

   <android.support.v4.widget.SwipeRefreshLayout
       android:id="@+id/swlt"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:scrollbars="vertical"
       >
   <android.support.v7.widget.RecyclerView
       android:id="@+id/rlv"
       android:layout_width="match_parent"
       android:layout_height="match_parent">

   </android.support.v7.widget.RecyclerView>

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

</LinearLayout>
 
先走网络框架
 
/Okhttputils///
public class OkhttpUtils {
    private static OkhttpUtils okHttpUtils;
    private final OkHttpClient httpClient;
    private final Handler handler;

    //构造方法私有化
    private OkhttpUtils() {

        HttpLoggingInterceptor LoggingInterceptor = new HttpLoggingInterceptor();

        LoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
        httpClient = new OkHttpClient.Builder()
                .addInterceptor(LoggingInterceptor)
                .build();
        handler = new Handler(Looper.getMainLooper());
    }

    public static OkhttpUtils getInstance() {
        if (okHttpUtils == null) {
            synchronized (OkhttpUtils.class) {
                if (okHttpUtils == null) {
                    okHttpUtils = new OkhttpUtils();
                }
            }
        }
        return okHttpUtils;
    }



    public void doGet(String url, final Class clazz, final OnNetListener onNetListener) {
        Request request = new Request.Builder()
                .url(url)
                .build();

        httpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, final Response response) throws IOException {

                String string = response.body().string();
                final ItemBean itemBean= (ItemBean) new Gson().fromJson(string, clazz);

                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            onNetListener.onSuccess(itemBean);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                });
            }
        });
    }
}
OnNetListener/
public interface OnNetListener {

    public void onSuccess(ItemBean baseBean) throws IOException;

    public void onError(IOException e);


}
Itembean
public class ItemBean {

    private int code;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }
}
UserBean//
自己在网上获取到进行解析
 
///MainActivity/
public class MainActivity extends AppCompatActivity {

    private RecyclerView rlv;
    private SwipeRefreshLayout swlt;
    private Adapter adapter;
    private Banner mBanner;
    private RecyclerView mRlv;
    private SwipeRefreshLayout mSwlt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mBanner = (Banner) findViewById(R.id.banner);
        //viewpager无限轮播
        mBanner.setImageLoader(new GlideImageLoader());
        ArrayList<String> list = new ArrayList<>();
        list.add("http://imgsrc.baidu.com/image/c0%3Dshijue1%2C0%2C0%2C294%2C40/sign=dce088c1a3ec8a1300175fa39f6afbfa/622762d0f703918f2b2091e45b3d269759eec42f.jpg");
        list.add("http://img1.imgtn.bdimg.com/it/u=1727466040,2801574451&fm=27&gp=0.jpg");
        list.add("http://imgsrc.baidu.com/image/c0%3Dshijue1%2C0%2C0%2C294%2C40/sign=407b2e95de3f8794c7f2406dba726481/a5c27d1ed21b0ef4c9eb5573d7c451da81cb3e98.jpg");
        mBanner.setImages(list);
        mBanner.start();
        mBanner.setDelayTime(3000);

        //默认显示
        inint(true);

//      初始化组件
        rlv = (RecyclerView) findViewById(R.id.rlv);

        swlt = (SwipeRefreshLayout) findViewById(R.id.swlt);


        //        设置布局管理器

        rlv.setLayoutManager(new LinearLayoutManager(this));
//        网络请求数据


        //下拉刷新
        swlt.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        inint(true);
                    }
                }, 2000);
            }
        });

        //上拉加载
        rlv.setOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                LinearLayoutManager layoutManager = (LinearLayoutManager) rlv.getLayoutManager();
                int itemCount = layoutManager.getItemCount();
                int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition();
                if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
                    if (lastVisibleItemPosition == itemCount - 1) {
                        inint(false);
                    }
                }
            }
        });


    }

    private void inint(final boolean isRefresh) {

        OkhttpUtils.getInstance().doGet("http://169.254.52.218/mobile/index.php?act=goods&op=goods_list&page=100", Userbean.class, new OnNetListener() {

            @Override
            public void onSuccess(ItemBean baseBean) throws IOException {

                Userbean user = (Userbean) baseBean;

                List<Userbean.DatasBean.GoodsListBean> goods_list = user.getDatas().getGoods_list();

                adapter = new Adapter(MainActivity.this, goods_list);
                rlv.setAdapter(adapter);

                //判断刷新
                if (isRefresh) {
                    adapter.refresh(goods_list);
                    swlt.setRefreshing(false);
                } else {
                    adapter.loadMore(goods_list);
                }
            }

            @Override
            public void onError(IOException e) {

            }
        });


    }
适配器里的一个布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

   <ImageView
       android:id="@+id/img"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/tv"
        android:layout_marginLeft="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp" />
</LinearLayout>
//适配器///
public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private Context context;
      private List<Userbean.DatasBean.GoodsListBean> list=new ArrayList<>();

    public Adapter(Context context, List<Userbean.DatasBean.GoodsListBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(context).inflate(R.layout.layout, null);
        return new Myholder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

        Myholder hol= (Myholder) holder;

        String url = list.get(position).getGoods_image_url();

        ImageLoader.getInstance().displayImage(url,hol.img);

        hol.tv.setText(list.get(position).getGoods_name());
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class Myholder extends RecyclerView.ViewHolder{

        private  ImageView img;
        private  TextView tv;

        public Myholder(View itemView) {
            super(itemView);

             img= (ImageView)itemView.findViewById(R.id.img);
            tv = (TextView)itemView.findViewById(R.id.tv);

            /*点击跳转界面,可以根据条件来确定做不做*/
          tv.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {

                  Intent intent=new Intent(context, GoodActivity.class);
                  context.startActivity(intent);

              }
          });
        }
    }

    //在适配器里面设置刷新和加载
    public void refresh(List<Userbean.DatasBean.GoodsListBean> list){
        this.list.clear();
        this.list.addAll(list);
        notifyDataSetChanged();
    }

    public void loadMore(List<Userbean.DatasBean.GoodsListBean> list){
        this.list.addAll(list);
        notifyDataSetChanged();
    }
}
}
//图片加载/
public class Myapp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this).build();

        ImageLoader.getInstance().init(configuration);
    }
}
//重新设置图片(viewpager)详细去banmer上了解///
public class GlideImageLoader extends ImageLoader {

    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        com.nostra13.universalimageloader.core.ImageLoader.getInstance().displayImage((String) path,imageView);
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值