XRecyclerview下拉刷新、上拉加载和多条目展示

Activity类或Fragment类(这里用的是fragment)

public class SecondFragment extends Fragment implements ICircleView {

    Unbinder unbinder;
    @BindView(R.id.xrecy_cler_view)
    XRecyclerView xrecyClerView;
    private CirclePresenter circlePresenter;
    private LinearLayoutManager linearLayoutManager;
    int page = 1;
    private MyCircleAdapter circleAdapter;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.second_layout, container, false);
        unbinder = ButterKnife.bind(this, view);
        //创建线性布局
        linearLayoutManager = new LinearLayoutManager(getActivity());
        linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
        //设置条目之间的的间距
        xrecyClerView.addItemDecoration(new SpaceItemDecoration(30));
        xrecyClerView.setLayoutManager(linearLayoutManager);
        //初始化presenter
        circlePresenter = new CirclePresenter(SecondFragment.this);
        circlePresenter.getPresenterData(page);
        xrecyClerView.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                circlePresenter.getPresenterData(1);
                circleAdapter.notifyDataSetChanged();
                xrecyClerView.refreshComplete();
            }

            @Override
            public void onLoadMore() {
                circlePresenter.getPresenterData(page++);
                circleAdapter.notifyDataSetChanged();
                xrecyClerView.loadMoreComplete();
            }
        });
        return view;
    }

    @Override
    public void getViewData(final String data) {
        // Log.i("aa", "run: " + data);
        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Gson gson = new Gson();
                CircleBean circleBean = gson.fromJson(data, CircleBean.class);
                List<CircleBean.ResultBean> circleBeanResult = circleBean.getResult();
                //创建适配器
                circleAdapter = new MyCircleAdapter(getActivity(), circleBeanResult);
                xrecyClerView.setAdapter(circleAdapter);
            }
        });
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
    }
}

创建主页面Adapter

public class MyCircleAdapter extends XRecyclerView.Adapter<XRecyclerView.ViewHolder> {

    private Context context;
    private List<CircleBean.ResultBean> circleBeanResult;
    public static final int TYPE_ONE_IMAGE = 0;
    public static final int TYPE_TWO_IMAGE = 1;
    public MyCircleAdapter(Context context, List<CircleBean.ResultBean> circleBeanResult) {
        this.context = context;
        this.circleBeanResult = circleBeanResult;
    }
    @Override
    public int getItemCount() {
        return circleBeanResult.size();
    }
    @NonNull
    @Override
    public XRecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        if (i == TYPE_ONE_IMAGE) {
            return new ItemOneViewHolder(LayoutInflater.from(context).inflate(R.layout.circle_layout, viewGroup, false));
        } else {
            return new ItemTwoViewHolder(LayoutInflater.from(context).inflate(R.layout.circle_two__layout, viewGroup, false));
        }
    }

    @Override
    public void onBindViewHolder(@NonNull XRecyclerView.ViewHolder viewHolder, int i) {
        if (viewHolder instanceof ItemOneViewHolder) {
            ((ItemOneViewHolder) viewHolder).circleTextoneName.setText(circleBeanResult.get(i).getNickName());
            //Glid圆形图片
            RequestOptions requestOptions = RequestOptions.circleCropTransform();
            Glide.with(context).load(circleBeanResult.get(i).getHeadPic()).apply(requestOptions).into(((ItemOneViewHolder) viewHolder).circleOneImg);
            //long类型转化成data类型
            Long dateLong = Long.valueOf(circleBeanResult.get(i).getCreateTime());
            String time = new SimpleDateFormat("yyyy-MM-dd hh:ss").format(new Date(dateLong));
            ((ItemOneViewHolder) viewHolder).circleTextoneTime.setText(time);
            ((ItemOneViewHolder) viewHolder).circleTextoneTitle.setText(circleBeanResult.get(i).getContent());
            ((ItemOneViewHolder) viewHolder).textOnePrise.setText(circleBeanResult.get(i).getGreatNum());
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
            ((ItemOneViewHolder) viewHolder).recyclerOneView.setLayoutManager(linearLayoutManager);
            MyOneItmeAdapter oneItmeAdapter = new MyOneItmeAdapter(context, circleBeanResult);
            ((ItemOneViewHolder) viewHolder).recyclerOneView.setAdapter(oneItmeAdapter);
        }
        if (viewHolder instanceof ItemTwoViewHolder) {
            ((ItemTwoViewHolder) viewHolder).circleTexttwoName.setText(circleBeanResult.get(i).getNickName());

            RequestOptions requestOptions = RequestOptions.circleCropTransform();
            Glide.with(context).load(circleBeanResult.get(i).getHeadPic()).apply(requestOptions).into(((ItemTwoViewHolder) viewHolder).circleTwoImg);
            Long dateLong = Long.valueOf(circleBeanResult.get(i).getCreateTime());
            String time = new SimpleDateFormat("yyyy-MM-dd hh:ss").format(new Date(dateLong));
            ((ItemTwoViewHolder) viewHolder).circleTexttwoTime.setText(time);
            ((ItemTwoViewHolder) viewHolder).circleTexttwoTitle.setText(circleBeanResult.get(i).getContent());
            ((ItemTwoViewHolder) viewHolder).textTwoPrise.setText(circleBeanResult.get(i).getGreatNum());
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
            ((ItemTwoViewHolder) viewHolder).recyclerTwoView.setLayoutManager(linearLayoutManager);
            MyTwoItmeAdapter twoItmeAdapter = new MyTwoItmeAdapter(context, circleBeanResult);
            ((ItemTwoViewHolder) viewHolder).recyclerTwoView.setAdapter(twoItmeAdapter);
        }
    }


    @Override
    public int getItemViewType(int position) {
        return position % 2;
    }

    public class ItemOneViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.circle_one_img)
        ImageView circleOneImg;
        @BindView(R.id.circle_textone_name)
        TextView circleTextoneName;
        @BindView(R.id.circle_textone_time)
        TextView circleTextoneTime;
        @BindView(R.id.top_relativity)
        RelativeLayout topRelativity;
        @BindView(R.id.circle_textone_title)
        TextView circleTextoneTitle;
        @BindView(R.id.recycler_one_view)
        RecyclerView recyclerOneView;
        @BindView(R.id.text_one_prise)
        TextView textOnePrise;
        @BindView(R.id.circle_imgone_prise)
        ImageView circleImgonePrise;

        public ItemOneViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
    }

    public class ItemTwoViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.circle_two_img)
        ImageView circleTwoImg;
        @BindView(R.id.circle_texttwo_name)
        TextView circleTexttwoName;
        @BindView(R.id.circle_texttwo_time)
        TextView circleTexttwoTime;
        @BindView(R.id.top_two_relativity)
        RelativeLayout topTwoRelativity;
        @BindView(R.id.circle_texttwo_title)
        TextView circleTexttwoTitle;
        @BindView(R.id.recycler_two_view)
        RecyclerView recyclerTwoView;
        @BindView(R.id.text_two_prise)
        TextView textTwoPrise;
        @BindView(R.id.circle_img_prise)
        ImageView circleImgPrise;

        public ItemTwoViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
    }
}

创建第一个条目的adapter

public class MyOneItmeAdapter extends RecyclerView.Adapter<MyOneItmeAdapter.ViewHolder> {
    private Context context;
    private List<CircleBean.ResultBean> circleBeanResult;

    public MyOneItmeAdapter(Context context, List<CircleBean.ResultBean> circleBeanResult) {
        this.context = context;
        this.circleBeanResult = circleBeanResult;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.one_itme_layout, viewGroup, false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
        Glide.with(context).load(circleBeanResult.get(i).getImage()).into(viewHolder.oneImg1);
        Glide.with(context).load(circleBeanResult.get(i).getImage()).into(viewHolder.oneImg2);
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.one_img1)
        ImageView oneImg1;
        @BindView(R.id.one_img2)
        ImageView oneImg2;

        public ViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
    }
}

创建第二个条目的adapter

public class MyTwoItmeAdapter extends RecyclerView.Adapter<MyTwoItmeAdapter.ViewHolder> {


    private Context context;
    private List<CircleBean.ResultBean> circleBeanResult;

    public MyTwoItmeAdapter(Context context, List<CircleBean.ResultBean> circleBeanResult) {
        this.context = context;
        this.circleBeanResult = circleBeanResult;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.two_itme_layout, viewGroup, false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
        //设置图片圆角角度
        RoundedCorners roundedCorners= new RoundedCorners(20);
        //通过RequestOptions扩展功能,override:采样率,因为ImageView就这么大,可以压缩图片,降低内存消耗
        RequestOptions options=RequestOptions.bitmapTransform(roundedCorners).override(300, 300);
        Glide.with(context).load(circleBeanResult.get(i+1).getImage()).apply(options).into(viewHolder.twoImg1);
        Glide.with(context).load(circleBeanResult.get(i+1).getImage()).apply(options).into(viewHolder.twoImg2);
        Glide.with(context).load(circleBeanResult.get(i+1).getImage()).apply(options).into(viewHolder.twoImg3);
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.two_img1)
        ImageView twoImg1;
        @BindView(R.id.two_img2)
        ImageView twoImg2;
        @BindView(R.id.two_img3)
        ImageView twoImg3;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            ButterKnife.bind(this,itemView);
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值