布局:
<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); } }