SmartRefreshLayout(上拉下拉)+ScrollView 可以使轮播图也滑上去 否则轮播图不动 只滑底下recycleview部分 --页面全部代码


布局

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#0000">

    <com.scwang.smartrefresh.layout.SmartRefreshLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/refreshLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                >

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:id="@+id/fra01_rela"

                    >

                    <com.youth.banner.Banner
                        android:id="@+id/ban"
                        android:layout_width="match_parent"
                        android:layout_height="200dp"
                        >

                    </com.youth.banner.Banner>
                    <include layout="@layout/item_title"
                        />

                </RelativeLayout>
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="205dp"
                    android:text="精彩推荐"/>
                <android.support.v7.widget.RecyclerView
                    android:layout_below="@+id/fra01_rela"
                    android:layout_alignParentBottom="true"
                    android:id="@+id/recyclerview"
                    android:layout_marginTop="30dp"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:overScrollMode="never" />
            </RelativeLayout>

        </ScrollView>
    </com.scwang.smartrefresh.layout.SmartRefreshLayout>

    
</RelativeLayout>


activity

package com.example.com.fragment;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.example.com.activity.SousuoActivity;
import com.example.com.adapter.Fra1RecAdapter;
import com.example.com.bean.MessageBean;
import com.example.com.camera.R;
import com.example.com.activity.XiangqingActivity;
import com.example.com.presenter.MyDataPresenter;
import com.example.com.view.DataView;
import com.scwang.smartrefresh.header.MaterialHeader;
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.listener.OnLoadMoreListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import com.youth.banner.Banner;
import com.youth.banner.listener.OnBannerListener;
import com.youth.banner.loader.ImageLoader;
import com.youth.banner.transformer.AccordionTransformer;

import org.greenrobot.eventbus.EventBus;

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

/**
 * Created by linmeihui on 2018/5/15.
 */

public class ChoicenessFra extends Fragment implements DataView<MessageBean>,Fra1RecAdapter.onItemClick{


    private RecyclerView recyclerview;
    private Banner ban;
    private SmartRefreshLayout refreshLayout;
    private MyDataPresenter myDataPresenter;
    private List<MessageBean.RetBean.ListBean> list;
    private Fra1RecAdapter myRecAdapter;
    private List<String> listImg = new ArrayList<>();
    private List<MessageBean.RetBean.ListBean.ChildListBean> childList;
    private TextView title;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View v=inflater.inflate(R.layout.fra01,container,false);

        refreshLayout = v.findViewById(R.id.refreshLayout);
        ban = v.findViewById(R.id.ban);
        recyclerview = v.findViewById(R.id.recyclerview);

        title = v.findViewById(R.id.title);

        init();


        title.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), SousuoActivity.class);
                startActivity(intent);
            }
        });

        return v;
    }

    private void init() {

        myDataPresenter = new MyDataPresenter(this);

        toData();
        //设置 Header 为 Material风格 MaterialHeader
        refreshLayout.setRefreshHeader(new MaterialHeader(getActivity()).setShowBezierWave(false));
        //设置 Footer 为 球脉冲
        refreshLayout.setRefreshFooter(new BallPulseFooter(getActivity()).setSpinnerStyle(SpinnerStyle.Scale));

        //刷新
        refreshLayout.setOnRefreshListener(new OnRefreshListener() {
            @Override
            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
                refreshLayout.finishLoadMore(2000);
                refreshLayout.finishRefresh();
            }
        });

        //加载
        refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
            @Override
            public void onLoadMore(RefreshLayout refreshlayout) {
                refreshlayout.finishLoadMore(2000/*,false*/);//传入false表示加载失败
                refreshlayout.finishLoadMore();
            }
        });

        //设置布局管理器
        recyclerview.setLayoutManager(new LinearLayoutManager(getActivity()));
        recyclerview.setNestedScrollingEnabled(false);


    }

    @Override
    public void itemClick(int position) {

        Log.d("--", "itemClick: ");

        String dataId = childList.get(position).getDataId();

        Intent intent = new Intent(getActivity(), XiangqingActivity.class);

        intent.putExtra("data",dataId);

        startActivity(intent);

    }


    //展示图片的类
    public class ImgApp extends ImageLoader{

        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            Glide.with(getActivity()).load(path).into(imageView);
        }
    }


    //请求数据方法
    private void toData() {
        myDataPresenter.getDataUrl();
    }


    //回调成功方法
    @Override
    public void onSuccess(MessageBean messageBean) {

        list = messageBean.getRet().getList();

        for (int i = 0; i <list.size() ; i++) {
            if (list.get(i).getChildList().get(0).getPic().equals("")||list.get(i).getTitle().equals("")){
                list.remove(i);
            }
        }

        EventBus.getDefault().post(list);



        Log.d("--", "onSuccess: "+list);
        //获取图片
        getPic();

        childList = list.get(4).getChildList();

        getAdapter(childList);

        EventBus.getDefault().postSticky(list);


    }

    //获取图片数据
    private void getPic() {

        final List<MessageBean.RetBean.ListBean.ChildListBean> childList = list.get(0).getChildList();

        for (int i = 0; i < childList.size() ; i++) {
            listImg.add(childList.get(i).getPic());
        }

        //引用ImgApp,加载里面的东西
        ban.setImages(listImg)
                .setImageLoader(new ImgApp())
                .setBannerAnimation(AccordionTransformer.class)
                .isAutoPlay(true)
                .setDelayTime(2000)
                .start();


        ban.setOnBannerListener(new OnBannerListener() {
            @Override
            public void OnBannerClick(int position) {

                String shareURL = childList.get(position).getShareURL();
                //Toast.makeText(getActivity(),shareURL,Toast.LENGTH_SHORT).show();
            }
        });

    }


    //设置recycleview适配器
    private void getAdapter(List<MessageBean.RetBean.ListBean.ChildListBean> childList) {

        myRecAdapter = new Fra1RecAdapter(getActivity(), childList);
        recyclerview.setAdapter(myRecAdapter);
        myRecAdapter.setClick(this);
    }



    //回调失败方法
    @Override
    public void onError(String message) {

        Toast.makeText(getActivity(),message,Toast.LENGTH_SHORT).show();
    }
}


dataview

package com.example.com.view;

import com.example.com.bean.MessageBean;

/**
 * Created by linmeihui on 2018/5/16.
 */

public interface DataView<T> {

    void onSuccess(MessageBean messageBean);

    void onError(String message);
}


adapter

package com.example.com.adapter;

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

import com.bumptech.glide.Glide;
import com.example.com.bean.MessageBean;
import com.example.com.camera.R;

import java.util.List;

/**
 * Created by linmeihui on 2018/5/17.
 */

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

    Context context;
    List<MessageBean.RetBean.ListBean.ChildListBean> childList;
    onItemClick click;

    public Fra1RecAdapter(Context context, List<MessageBean.RetBean.ListBean.ChildListBean> childList) {

        this.context=context;
        this.childList=childList;

    }

    public void setClick(onItemClick click){
        this.click=click;
    }

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

       // View view = View.inflate(context,R.layout.recy_item,null);

        View view = LayoutInflater.from(context).inflate(R.layout.fra1_recy_item, parent,false);
        ViewHolder viewHolder=new ViewHolder(view);

        return viewHolder;
    }

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

        ViewHolder viewHolder= (ViewHolder) holder;

        viewHolder.tv.setText(childList.get(position).getTitle());
        Glide.with(context).load(childList.get(position).getPic()).into(viewHolder.img);
        viewHolder.img.setScaleType(ImageView.ScaleType.FIT_XY);

        viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                click.itemClick(position);
            }
        });
    }

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


    class ViewHolder extends RecyclerView.ViewHolder{

        private final ImageView img;
        private final TextView tv;

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

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

        }
    }

    public interface onItemClick{
        void itemClick(int position);
    }
}


adapter子布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:scaleType="center"
        android:id="@+id/img"/>
    <TextView
        android:layout_below="@id/img"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text=""
        android:layout_margin="5dp"
        android:id="@+id/tv"/>
</RelativeLayout>


mydatapresenter

package com.example.com.presenter;

import com.example.com.bean.MessageBean;
import com.example.com.model.MyDataModel;
import com.example.com.view.DataView;

import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.subscribers.DefaultSubscriber;

/**
 * Created by linmeihui on 2018/5/16.
 */

public class MyDataPresenter implements DataPresenter<MessageBean> {

    DataView dataView;
    private final MyDataModel myDataModel;

    public MyDataPresenter(DataView dataView){
        this.dataView=dataView;
        myDataModel = new MyDataModel();
    }


    @Override
    public void success(Flowable<MessageBean> t) {

        t.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new DefaultSubscriber<MessageBean>() {
                    @Override
                    public void onNext(MessageBean messageBean) {
                        dataView.onSuccess(messageBean);
                    }

                    @Override
                    public void onError(Throwable t) {

                        dataView.onError(t.getMessage());
                    }

                    @Override
                    public void onComplete() {

                    }
                });

    }


    public void setDataView(){
        if(dataView != null){
            dataView = null;
        }
    }

    public void getDataUrl(){

        myDataModel.toData(this);
    }

}


datapresenter

package com.example.com.presenter;

import com.example.com.bean.MessageBean;

import io.reactivex.Flowable;

/**
 * Created by linmeihui on 2018/5/16.
 */

public interface DataPresenter<T> {
    void success(Flowable<T> t);
}


猜你喜欢

转载自blog.csdn.net/ch5211314/article/details/80733071