XRecyclerView上拉下拉多条目展示

1主页面布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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">
    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:id="@+id/XRecyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.jcodecraeer.xrecyclerview.XRecyclerView>
</RelativeLayout>

2MainActivity

package com.example.recyclerview.view.activity;

import android.support.v7.widget.LinearLayoutManager;

import com.example.recyclerview.R;
import com.example.recyclerview.model.bean.NewsBean;
import com.example.recyclerview.presenter.MainPresenter;
import com.example.recyclerview.view.adapter.MyAdapter;
import com.example.recyclerview.view.interfaces.IMainView;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.List;

public class MainActivity extends BaseActivity implements IMainView<NewsBean> {

    private MainPresenter mainPresenter;
    private XRecyclerView xRecyclerView;
    private MyAdapter myAdapter;

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

    @Override
    protected void initView() {
        xRecyclerView = findViewById(R.id.XRecyclerView);
    }

    @Override
    protected void initData() {
        mainPresenter = new MainPresenter();
        mainPresenter.loadDataFromNer();
        mainPresenter.setView(this);
    }

    @Override
    protected void bindEvent() {

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mainPresenter.datachView();
    }

    @Override
    public void onSuccess(NewsBean newsBean) {
        List<NewsBean.ItemsBean> items = newsBean.getItems();
        myAdapter = new MyAdapter(this);
        myAdapter.setData(items);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        xRecyclerView.setLayoutManager(linearLayoutManager);
        xRecyclerView.setAdapter(myAdapter);
        xRecyclerView.setLoadingMoreEnabled(true);

        xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                //下拉刷新
                mainPresenter.loadDataFromNer();
            }

            @Override
            public void onLoadMore() {
                //上拉加载
                mainPresenter.loadDataFromNer();
            }
        });
        xRecyclerView.refreshComplete();//关闭下拉
        xRecyclerView.loadMoreComplete();//关闭上拉
    }

    @Override
    public void onErr(String err) {

    }
}

3adapter

package com.example.recyclerview.view.adapter;

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

import com.example.recyclerview.R;
import com.example.recyclerview.model.bean.NewsBean;
import com.squareup.picasso.Picasso;


import java.util.ArrayList;
import java.util.List;

public class MyAdapter extends RecyclerView.Adapter {
    private Context context;
    private List<NewsBean.ItemsBean> items=new ArrayList<>();

    public MyAdapter(Context context) {
        this.context = context;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        //getItemViewType()
        View view;
        RecyclerView.ViewHolder viewHolder = null;
        switch (i) {
            case 0:
                view = View.inflate(context, R.layout.more_item_0, null);
                viewHolder = new MyAdapterViewHolder0(view);
                break;
            case 1:
                view = View.inflate(context, R.layout.more_item_1, null);
                viewHolder = new MyAdapterViewHolder1(view);
                break;
            case 2:
                view = View.inflate(context, R.layout.more_item_2, null);
                viewHolder = new MyAdapterViewHolder2(view);
                break;
        }
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
        NewsBean.ItemsBean bean = items.get(i);
        if (viewHolder instanceof MyAdapterViewHolder0) {
            ((MyAdapterViewHolder0) viewHolder).mTitle.setText(bean.getTitle());
            ((MyAdapterViewHolder0) viewHolder).mDesc.setText(bean.getDesc());
            Picasso.with(context).load(bean.getImage()).into(((MyAdapterViewHolder0) viewHolder).mIamge);
        } else if (viewHolder instanceof MyAdapterViewHolder1) {
            List<NewsBean.ItemsBean.ImagesBean> imagesBean = bean.getImages();
            Picasso.with(context).load(imagesBean.get(0).getPic()).into(((MyAdapterViewHolder1) viewHolder).mIamge1);
            Picasso.with(context).load(imagesBean.get(1).getPic()).into(((MyAdapterViewHolder1) viewHolder).mIamge2);
            Picasso.with(context).load(imagesBean.get(2).getPic()).into(((MyAdapterViewHolder1) viewHolder).mIamge3);
        } else if (viewHolder instanceof MyAdapterViewHolder2) {
            ((MyAdapterViewHolder2) viewHolder).mTitle.setText(bean.getTitle());
        }
    }

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


    @Override
    public int getItemViewType(int position) {
        super.getItemViewType(position);
        int type = items.get(position).getType();//返回 0  1  2
        return type;
    }

    public void setData(List<NewsBean.ItemsBean> items) {
        this.items = items;
        notifyDataSetChanged();
    }


    //传递数据
    /*public void setData(List<NewsBean.ItemsBean> data) {
        this.data = data;
        notifyDataSetChanged();
    }*/

    private class MyAdapterViewHolder0 extends RecyclerView.ViewHolder {

        TextView mTitle, mDesc;
        ImageView mIamge;

        public MyAdapterViewHolder0(@NonNull View itemView) {
            super(itemView);
            mIamge = (ImageView) itemView.findViewById(R.id.image);
            mTitle = (TextView) itemView.findViewById(R.id.tv_title);
            mDesc = (TextView) itemView.findViewById(R.id.tv_desc);
        }
    }

    private class MyAdapterViewHolder1 extends RecyclerView.ViewHolder {

        ImageView mIamge1, mIamge2, mIamge3;

        public MyAdapterViewHolder1(@NonNull View itemView) {
            super(itemView);
            mIamge1 = (ImageView) itemView.findViewById(R.id.image1);
            mIamge2 = (ImageView) itemView.findViewById(R.id.image2);
            mIamge3 = (ImageView) itemView.findViewById(R.id.image3);
        }
    }

    private class MyAdapterViewHolder2 extends RecyclerView.ViewHolder {

        TextView mTitle;

        public MyAdapterViewHolder2(@NonNull View itemView) {
            super(itemView);
            mTitle = (TextView) itemView.findViewById(R.id.tv_title);
        }
    }
}

4每个条目布局自己随意

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值