recyclerView-SwipeRefreshLayou


package com.example.myshopcart.view.activity;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.example.myshopcart.R;
import com.example.myshopcart.model.bean.ListBeans;
import com.example.myshopcart.model.bean.ShopBeans;
import com.example.myshopcart.presenter.MainPresenter;
import com.example.myshopcart.view.adapter.RcyAdapter;
import com.example.myshopcart.view.interfaces.IMainView;
import com.google.gson.Gson;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends BaseActivity<MainPresenter> implements IMainView, SwipeRefreshLayout.OnRefreshListener, RcyAdapter.setOnItemClickListener {

    private List<ListBeans.MiaoshaBean.ListBeanX> beanXList = new ArrayList<>();
    private RecyclerView mMainRcy;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0) {
                String s = (String) msg.obj;
                //解析
                ListBeans listBeans = new Gson().fromJson(s, ListBeans.class);
                List<ListBeans.MiaoshaBean.ListBeanX> list = listBeans.getMiaosha().getList();
                // Log.e("my", list.get(0).getSubhead());
                beanXList.addAll(list);
                //设置适配器
                rcyAdapter = new RcyAdapter(MainActivity.this, beanXList);
                mMainRcy.setAdapter(rcyAdapter);
                //刷新适配器
                rcyAdapter.notifyDataSetChanged();
                //接口调用
                setClick();
            }
        }
    };

    private void setClick() {
        rcyAdapter.setMonItemClickListener(this);
    }

    private RcyAdapter rcyAdapter;
    private SwipeRefreshLayout main_swipe;
    private LinearLayoutManager linearLayoutManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    protected void initView() {
        mMainRcy = (RecyclerView) findViewById(R.id.main_rcy);
        main_swipe = (SwipeRefreshLayout) findViewById(R.id.main_swipe);
        //布局管理器
        linearLayoutManager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false);
        mMainRcy.setLayoutManager(linearLayoutManager);

    }

    @Override
    protected void initData() {
        loadDataServer();
        //设置颜色
        main_swipe.setColorSchemeColors(Color.RED, Color.BLUE);
        //main_swipe监听
        main_swipe.setOnRefreshListener(this);
        //rcy上啦加载更多监听
        mMainRcy.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
            }

            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                //可见的条目数
                int childCount = mMainRcy.getChildCount();
                int itemCount = linearLayoutManager.getItemCount();//总条目数
                int firstVisibleItemPosition = linearLayoutManager.findFirstVisibleItemPosition();
                if (firstVisibleItemPosition + childCount == itemCount) {
                    loadDataServer();
                    rcyAdapter.notifyDataSetChanged();
                }
            }
        });
    }

    private void loadDataServer() {
        String path = "https://www.zhaoapi.cn/ad/getAd";
        basePresenter.loadData(path);
    }

    @Override
    MainPresenter setPresenter() {
        return new MainPresenter();
    }

    @Override
    protected int setLayout() {
        return R.layout.activity_main;
    }

    @Override
    public void onSuccess(String s) {
        Message msg = Message.obtain();
        msg.obj = s;
        msg.what = 0;
        handler.sendMessage(msg);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        basePresenter.deachView();
    }

    @Override
    public void onRefresh() {
        //延时刷新
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //停止刷新
                main_swipe.setRefreshing(false);
            }
        }, 2000);
    }

    @Override
    public void onItemClick(int position) {
        Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_LONG).show();
        Intent intent = new Intent(MainActivity.this, XiangQingActivity.class);
        String images = beanXList.get(position).getImages();
        String subhead = beanXList.get(position).getSubhead();
        double price = beanXList.get(position).getPrice();
        ShopBeans shopBeans = new ShopBeans(images, subhead, price);
        Bundle bundle = new Bundle();
        bundle.putSerializable("shopBeans", shopBeans);
        intent.putExtra("bundle", bundle);
        startActivity(intent);
    }
}
<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context=".view.activity.MainActivity">

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/main_swipe"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/main_rcy"
            android:layout_width="match_parent"
            android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
    </android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>
package com.example.myshopcart.view.adapter;

import android.content.Context;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.myshopcart.R;
import com.example.myshopcart.model.bean.ListBeans;

import java.util.List;

public class RcyAdapter extends RecyclerView.Adapter implements View.OnClickListener {

    private Context context;
    private List<ListBeans.MiaoshaBean.ListBeanX> list;

    public RcyAdapter(Context context, List<ListBeans.MiaoshaBean.ListBeanX> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.recy_layout, null);
        //为每个item添加点击事件
        view.setOnClickListener(this);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        MyViewHolder viewHolder = (MyViewHolder) holder;
        viewHolder.rcy_text.setText(list.get(position).getSubhead());
        viewHolder.rcy_price.setText(list.get(position).getPrice() + "");
        String[] temp = null;
        temp = (list.get(position).getImages()).split("\\|");
        Glide.with(context).load(temp[0]).into(viewHolder.rcy_img);
        //条目点击
        viewHolder.itemView.setTag(position);
    }

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

    //点击事件
    @Override
    public void onClick(View v) {
        if (monItemClickListener != null) {
            monItemClickListener.onItemClick((Integer) v.getTag());
        }
    }

    private class MyViewHolder extends RecyclerView.ViewHolder {

        private ImageView rcy_img;
        private TextView rcy_text;
        private TextView rcy_price;

        public MyViewHolder(View itemView) {
            super(itemView);
            rcy_img = itemView.findViewById(R.id.rcy_img);
            rcy_text = itemView.findViewById(R.id.rcy_text);
            rcy_price = itemView.findViewById(R.id.rcy_price);
        }
    }

    //声明变量
    private setOnItemClickListener monItemClickListener;

    //接口回调
    public interface setOnItemClickListener {
        void onItemClick(int position);
    }

    //set方法
    public void setMonItemClickListener(setOnItemClickListener monItemClickListener) {
        this.monItemClickListener = monItemClickListener;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值