RecyclerView+Retrofit

布局:

<android.support.v7.widget.RecyclerView
    android:id="@+id/rel_follow"
    android:layout_marginTop="7dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
 

Constant:

package com.example.quarter.model.http;

public class Constant {

    public static final String BASE_URL="https://www.zhaoapi.cn/";

}
 

API:

package com.example.quarter.model.http;

import com.example.quarter.model.bean.ParagraphBean;
import com.example.quarter.model.bean.HotBannerBean;
import com.example.quarter.model.bean.HotRedBean;

import io.reactivex.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;

public interface RetrofitApi {


    @POST("quarter/getJokes")
    @FormUrlEncoded
    Observable<ParagraphBean> FollowShow(@Field("source") String source, @Field("token") String token, @Field("appVersion") String appVersion, @Field("page") String page);



}

RetrofitUtils:

package com.example.quarter.model.http;

import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitUtils {

    private  Retrofit build;
    private static RetrofitUtils retrofitUtils;

    private RetrofitUtils(){

        build = new Retrofit.Builder().baseUrl(Constant.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
    }

    public static RetrofitUtils getInstace() {

        if (retrofitUtils==null) {
            retrofitUtils = new RetrofitUtils();
        }
        return retrofitUtils;
    }

    public RetrofitApi  getservice(){
        return build.create(RetrofitApi.class);
    }

}


Bean:

package com.example.quarter.model.bean;


import java.util.List;

public class ParagraphBean {


    /**
     * msg : 获取段子列表成功
     * code : 0
     * data : [{"commentNum":null,"content":"33111","createTime":"2018-06-05T14:08:40","imgUrls":null,"jid":2625,"praiseNum":null,"shareNum":null,"uid":10206,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1527246812917header.jpg","nickname":null,"praiseNum":"null"}},{"commentNum":null,"content":"1245455","createTime":"2018-05-31T12:39:00","imgUrls":null,"jid":2624,"praiseNum":null,"shareNum":null,"uid":15263,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1527741745530head_icon.jpg","nickname":null,"praiseNum":"null"}},{"commentNum":null,"content":"我是傻逼","createTime":"2018-05-15T18:02:36","imgUrls":null,"jid":2623,"praiseNum":null,"shareNum":null,"uid":169,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1522049337137cropped_1522049339259.jpg","nickname":"不熟","praiseNum":"null"}},{"commentNum":null,"content":"是王旭阳  二百五","createTime":"2018-05-14T19:10:04","imgUrls":null,"jid":2622,"praiseNum":null,"shareNum":null,"uid":11196,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1527577493751touxiang.jpg","nickname":null,"praiseNum":"null"}},{"commentNum":null,"content":"王旭阳,怎么这么帅","createTime":"2018-05-14T15:40:31","imgUrls":null,"jid":2621,"praiseNum":null,"shareNum":null,"uid":11196,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1527577493751touxiang.jpg","nickname":null,"praiseNum":"null"}},{"commentNum":null,"content":"我觉得王旭阳好帅啊","createTime":"2018-05-14T15:37:40","imgUrls":null,"jid":2620,"praiseNum":null,"shareNum":null,"uid":11196,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1527577493751touxiang.jpg","nickname":null,"praiseNum":"null"}},{"commentNum":null,"content":"我是王旭阳,和我玩贪玩蓝月,是兄弟,就打王旭阳","createTime":"2018-05-14T15:34:51","imgUrls":null,"jid":2619,"praiseNum":null,"shareNum":null,"uid":11196,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1527577493751touxiang.jpg","nickname":null,"praiseNum":"null"}},{"commentNum":null,"content":"\"fdfdsf\"","createTime":"2018-05-11T14:35:56","imgUrls":null,"jid":2618,"praiseNum":null,"shareNum":null,"uid":12025,"user":{"age":null,"fans":"null","follow":false,"icon":null,"nickname":"踩电门的猫","praiseNum":"null"}},{"commentNum":null,"content":"我是孙晶","createTime":"2018-05-11T10:50:29","imgUrls":"https://www.zhaoapi.cn/images/quarter/1526007029403Screenshot_2018-03-19-13-23-00.png","jid":2617,"praiseNum":null,"shareNum":null,"uid":12509,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1523839244885crop_photo.jpg","nickname":"å¼ é\u009c²","praiseNum":"null"}},{"commentNum":null,"content":"我是孙晶","createTime":"2018-05-11T10:49:59","imgUrls":"https://www.zhaoapi.cn/images/quarter/1526006999590Screenshot_2018-03-19-13-23-00.png","jid":2616,"praiseNum":null,"shareNum":null,"uid":12509,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1523839244885crop_photo.jpg","nickname":"å¼ é\u009c²","praiseNum":"null"}}]
     */

    private String msg;
    private String code;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        /**
         * commentNum : null
         * content : 33111
         * createTime : 2018-06-05T14:08:40
         * imgUrls : null
         * jid : 2625
         * praiseNum : null
         * shareNum : null
         * uid : 10206
         * user : {"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1527246812917header.jpg","nickname":null,"praiseNum":"null"}
         */

        private Object commentNum;
        private String content;
        private String createTime;
        private Object imgUrls;
        private int jid;
        private Object praiseNum;
        private Object shareNum;
        private int uid;
        private UserBean user;

        public Object getCommentNum() {
            return commentNum;
        }

        public void setCommentNum(Object commentNum) {
            this.commentNum = commentNum;
        }

        public String getContent() {
            return content;
        }

        public void setContent(String content) {
            this.content = content;
        }

        public String getCreateTime() {
            return createTime;
        }

        public void setCreateTime(String createTime) {
            this.createTime = createTime;
        }

        public Object getImgUrls() {
            return imgUrls;
        }

        public void setImgUrls(Object imgUrls) {
            this.imgUrls = imgUrls;
        }

        public int getJid() {
            return jid;
        }

        public void setJid(int jid) {
            this.jid = jid;
        }

        public Object getPraiseNum() {
            return praiseNum;
        }

        public void setPraiseNum(Object praiseNum) {
            this.praiseNum = praiseNum;
        }

        public Object getShareNum() {
            return shareNum;
        }

        public void setShareNum(Object shareNum) {
            this.shareNum = shareNum;
        }

        public int getUid() {
            return uid;
        }

        public void setUid(int uid) {
            this.uid = uid;
        }

        public UserBean getUser() {
            return user;
        }

        public void setUser(UserBean user) {
            this.user = user;
        }

        public static class UserBean {
            /**
             * age : null
             * fans : null
             * follow : false
             * icon : https://www.zhaoapi.cn/images/1527246812917header.jpg
             * nickname : null
             * praiseNum : null
             */

            private Object age;
            private String fans;
            private boolean follow;
            private String icon;
            private Object nickname;
            private String praiseNum;

            public Object getAge() {
                return age;
            }

            public void setAge(Object age) {
                this.age = age;
            }

            public String getFans() {
                return fans;
            }

            public void setFans(String fans) {
                this.fans = fans;
            }

            public boolean isFollow() {
                return follow;
            }

            public void setFollow(boolean follow) {
                this.follow = follow;
            }

            public String getIcon() {
                return icon;
            }

            public void setIcon(String icon) {
                this.icon = icon;
            }

            public Object getNickname() {
                return nickname;
            }

            public void setNickname(Object nickname) {
                this.nickname = nickname;
            }

            public String getPraiseNum() {
                return praiseNum;
            }

            public void setPraiseNum(String praiseNum) {
                this.praiseNum = praiseNum;
            }
        }
    }
}

interface:

package com.example.quarter.view.interfaces;

import com.example.quarter.model.bean.ParagraphBean;

import java.util.List;

public interface ParagraphView extends BaseView {

    void onSuccessFollow(List<ParagraphBean.DataBean> list);
}

presenter:

package com.example.quarter.presenter;

import com.example.quarter.model.bean.ParagraphBean;
import com.example.quarter.model.http.RetrofitUtils;
import com.example.quarter.view.interfaces.ParagraphView;

import java.util.List;

import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;

public class ParagraphPresenter extends BasePresenter<ParagraphView> {

    private final RetrofitUtils instace;

    public ParagraphPresenter(){

        instace = RetrofitUtils.getInstace();
    }

    public void LoadFollowServre(String source,String token,String appVersion,String page){

        Observable<ParagraphBean> data = instace.getservice().FollowShow(source, token, appVersion, page);
       data.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<ParagraphBean>() {
           @Override
           public void onSubscribe(Disposable d) {

           }

           @Override
           public void onNext(ParagraphBean followBean) {
               List<ParagraphBean.DataBean> data1 = followBean.getData();
               getView().onSuccessFollow(data1);

           }

           @Override
           public void onError(Throwable e) {

           }

           @Override
           public void onComplete() {

           }
       });
    }


}
child_xml:

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

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/follow_sdv"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:src="@mipmap/ic_launcher" />


    <TextView
        android:id="@+id/follow_title"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_alignParentStart="true"
        android:layout_centerVertical="true"
        android:layout_marginStart="74dp"
        android:text="name"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/follow_time"
        android:layout_width="wrap_content"
        android:layout_height="29dp"
        android:layout_alignParentBottom="true"
        android:layout_alignStart="@+id/follow_title"
        android:text="hahahha" />

</RelativeLayout>

<TextView
    android:id="@+id/follow_context"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="30dp"
    android:layout_marginTop="8dp"
    android:text="哈哈哈哈哈"/>
Adpater:
package com.example.quarter.view.adpater;

import android.content.Context;
import android.graphics.Color;
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.TextView;

import com.example.quarter.R;
import com.example.quarter.model.bean.ParagraphBean;
import com.facebook.drawee.generic.RoundingParams;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

public class ParagraphAdpater extends RecyclerView.Adapter {

    Context context;
    List<ParagraphBean.DataBean> list;

    public ParagraphAdpater(Context context, List<ParagraphBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.paragraphitem, parent, false);
        return new MyHolder(view);
    }

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

        MyHolder ho = (MyHolder) holder;
        ho.follow_sdv.setImageURI(list.get(position).getUser().getIcon());
        ho.follow_title.setText(list.get(position).getUser().getNickname()+"");
        ho.follow_time.setText(list.get(position).getCreateTime());
        ho.follow_context.setText(list.get(position).getContent()+"");


        //图像设置圆角
        RoundingParams roundingParams = RoundingParams.fromCornersRadius(50f);
        roundingParams.setRoundAsCircle(true);
        roundingParams.setBorder(Color.BLUE,1);
        roundingParams.setOverlayColor(Color.WHITE);
        roundingParams.setCornersRadius(30f);
        ho.follow_sdv.getHierarchy().setRoundingParams(roundingParams);

    }

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

    private class MyHolder extends RecyclerView.ViewHolder {

        private SimpleDraweeView follow_sdv;
        private TextView follow_title;
        private TextView follow_time;
        private TextView follow_context;

        public MyHolder(View view) {
            super(view);
            follow_sdv = view.findViewById(R.id.follow_sdv);
            follow_title = view.findViewById(R.id.follow_title);
            follow_time = view.findViewById(R.id.follow_time);
            follow_context = view.findViewById(R.id.follow_context);
        }
    }
}

Fragment:

package com.example.quarter.view.fragment;

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.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.quarter.R;
import com.example.quarter.model.bean.ParagraphBean;
import com.example.quarter.presenter.ParagraphPresenter;
import com.example.quarter.view.adpater.ParagraphAdpater;
import com.example.quarter.view.interfaces.ParagraphView;

import java.util.List;

public class ParagraphFragment extends Fragment implements ParagraphView {

    private RecyclerView rel_follow;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.paragraphfragment, container, false);

        rel_follow = view.findViewById(R.id.rel_follow);
        rel_follow.setLayoutManager(new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false));
       // rel_follow.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL));

        ParagraphPresenter paragraphPresenter = new ParagraphPresenter();
        paragraphPresenter.attachView(this);
        paragraphPresenter.LoadFollowServre("android","0","101","1");

        return view;
    }

    @Override
    public void onSuccessFollow(List<ParagraphBean.DataBean> list) {

        ParagraphAdpater paragraphAdpater = new ParagraphAdpater(getActivity(), list);
        rel_follow.setAdapter(paragraphAdpater);

    }
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值