一刻钟 简单段子实现
依赖===========================================
implementation 'com.roughike:bottom-bar:1.3.3' implementation 'com.jcodecraeer:xrecyclerview:1.3.2' implementation 'com.android.support:design:27.1.1' implementation 'com.squareup.retrofit2:retrofit:2.4.0' implementation "io.reactivex.rxjava2:rxjava:2.1.13"//使retrofit支持Rxjava implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0' implementation 'com.squareup.retrofit2:converter-gson:2.4.0' //使retrofit支持Gson解析 implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'com.google.dagger:dagger:2.8' annotationProcessor 'com.google.dagger:dagger-compiler:2.7' implementation 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' implementation 'com.facebook.fresco:fresco:1.9.0' implementation 'org.greenrobot:greendao:3.2.2' // add library
权限======================================
<uses-permission android:name="android.permission.INTERNET"/>
android:name=".View.App.MyApp"
布局===========================================
main_activity
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".View.activity.MainActivity"> <FrameLayout android:id="@+id/fl" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
fragment_duanzi==========================================
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="50dp" android:background="#FF1ABFD9"> <ImageView android:layout_width="40dp" android:layout_height="40dp" android:layout_centerVertical="true" android:background="@drawable/user_icon"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_centerVertical="true" android:text="段子"/> <ImageView android:layout_width="40dp" android:layout_height="40dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:background="@drawable/edit_icon"/> </RelativeLayout> <com.jcodecraeer.xrecyclerview.XRecyclerView android:id="@+id/xrl" android:layout_width="match_parent" android:layout_height="match_parent"> </com.jcodecraeer.xrecyclerview.XRecyclerView> </LinearLayout>
xrv_layout=======================================
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:fresco="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/img" android:layout_width="70dp" android:layout_height="70dp" android:layout_margin="3dp" fresco:roundAsCircle="true" /> <LinearLayout android:layout_width="100dp" android:layout_height="match_parent" android:layout_margin="3dp" android:orientation="vertical"> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="123" android:textColor="#f00" android:textSize="16sp" /> <TextView android:id="@+id/tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="123" android:textSize="16sp" /> </LinearLayout> <ImageView android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical" android:layout_marginLeft="150dp" android:src="@drawable/add_icon" /> </LinearLayout> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/img_xia" android:layout_width="match_parent" android:layout_height="200dp" /> </LinearLayout>
功能======================================
MainActivity===========================================
package com.example.moni2.View.activity; import android.support.v4.app.FragmentManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.example.moni2.R; import com.example.moni2.View.framgnet.DuanziFragment; public class MainActivity extends AppCompatActivity {@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DuanziFragment duanziFragment = new DuanziFragment(); FragmentManager manager = getSupportFragmentManager(); manager.beginTransaction().replace(R.id.fl, duanziFragment).commit(); } }
DuanziAdapter===============================
package com.example.moni2.View.adapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.moni2.Modle.bena.DuanziBean; import com.example.moni2.R; import com.facebook.drawee.view.SimpleDraweeView; import java.util.List; import io.reactivex.annotations.NonNull; public class DuanziAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {private Context context; private List<DuanziBean.DataBean> list; private LayoutInflater inflater; public DuanziAdapter(Context context, List<DuanziBean.DataBean> list) {this.context = context; this.list = list; inflater = LayoutInflater.from(context); }@NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view = inflater.inflate(R.layout.xrv_layout, parent, false); return new MyViewHolder(view); }@Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {DuanziBean.DataBean dataBean = list.get(position); MyViewHolder myViewHolder = (MyViewHolder) holder; String imgUrls = (String) dataBean.getImgUrls(); String imgUrl = "https://www.zhaoapi.cn/images/1530797853445head_icon.jpg"; if (!TextUtils.isEmpty(imgUrls)) {imgUrl = imgUrls.split("\\|")[0]; }myViewHolder.iv.setImageURI(imgUrl); myViewHolder.tvName.setText(dataBean.getUser().getNickname() + ""); myViewHolder.tvTime.setText(dataBean.getCreateTime()); }@Override public int getItemCount() {return list.size(); }private class MyViewHolder extends RecyclerView.ViewHolder {private final SimpleDraweeView iv; private final TextView tvName; private final TextView tvTime; public MyViewHolder(View itemView) {super(itemView); iv = itemView.findViewById(R.id.img); tvName = itemView.findViewById(R.id.tv_name); tvTime = itemView.findViewById(R.id.tv_time); }}public void refresh(List<DuanziBean.DataBean> tempList) {//清楚原先集合里的内容 this.list.clear(); this.list.addAll(tempList); notifyDataSetChanged(); }public void loadMore(List<DuanziBean.DataBean> tempList) {this.list.addAll(tempList); notifyDataSetChanged(); }public int getListNum(){return this.list.size(); } }
MyApp=======================
package com.example.moni2.View.App; import android.app.Application; import com.facebook.drawee.backends.pipeline.Fresco; public class MyApp extends Application {@Override public void onCreate() {super.onCreate(); Fresco.initialize(this); } }
BeasFrament===================================
package com.example.moni2.View.framgnet; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.example.moni2.Modle.ui.BaseContract; import com.example.moni2.Presenter.IBase; import javax.inject.Inject; import io.reactivex.annotations.NonNull; import io.reactivex.annotations.Nullable; public abstract class BaseFragment<T extends BaseContract.BasePresenter> extends Fragment implements IBase, BaseContract.BaseView { @Inject protected T mPresenter; @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable BundlesavedInstanceState) {inject(); View view = inflater.inflate(getContentLayout(), null); mPresenter.attchView(this); initView(view); return view; }@Override public void onDestroy() {super.onDestroy(); mPresenter.detachView(); }@Override public void showLoading() {}@Override public void dismissLoading() {} }
DuanziFragnent===========================
package com.example.moni2.View.framgnet; import android.support.v7.widget.LinearLayoutManager; import android.view.View; import com.example.moni2.Modle.DuanziContract; import com.example.moni2.Modle.bena.DuanziBean; import com.example.moni2.Modle.utils.DaggerHttpComponent; import com.example.moni2.Presenter.DuanziPresenter; import com.example.moni2.R; import com.example.moni2.View.adapter.DuanziAdapter; import com.jcodecraeer.xrecyclerview.XRecyclerView; import java.util.ArrayList; import java.util.List; public class DuanziFragment extends BaseFragment<DuanziPresenter> implements DuanziContract.View {private XRecyclerView xlv; private List<DuanziBean.DataBean> list = new ArrayList<>(); private DuanziAdapter adapter; private boolean isRefresh = true; private int page = 1; @Override public int getContentLayout() {return R.layout.fragment_duanzi; }@Override public void initView(View view) {xlv = view.findViewById(R.id.xrl); xlv.setLayoutManager(new LinearLayoutManager(getContext())); adapter = new DuanziAdapter(getContext(), list); xlv.setAdapter(adapter); //判断数据库中是否有数据 //MyDataBeanDao myDataBeanDao = MyApp.getDaoSession().getMyDataBeanDao(); //List<MyDataBean> list = myDataBeanDao.queryBuilder().build().list(); if (list != null && list.size() > 0) {//说明数据库有数据 } else {mPresenter.getDuanzi(page + ""); }//设置刷新和加载更多监听 xlv.setLoadingListener(new XRecyclerView.LoadingListener() {@Override public void onRefresh() {//刷新 page = 1; isRefresh = true; mPresenter.getDuanzi(page + ""); }@Override public void onLoadMore() {//加载更多 page++; isRefresh = false; mPresenter.getDuanzi(page + ""); }}); }@Override public void inject() {DaggerHttpComponent.builder().build().inject(this); }@Override public void onSuccess(List<DuanziBean.DataBean> list) {if (isRefresh) {adapter.refresh(list); xlv.refreshComplete(); } else {adapter.loadMore(list); int listNum = adapter.getListNum(); xlv.loadMoreComplete(); int size = list.size(); int count = listNum + size; if (count >= 20) {xlv.setLoadingMoreEnabled(false); }}} }
IBeas===============================
package com.example.moni2.Presenter; import android.view.View; public interface IBase {int getContentLayout(); void initView(View view); void inject(); }
BeasPresenter====================================
package com.example.moni2.Presenter; import com.example.moni2.Modle.ui.BaseContract; public class BasePresenter <T extends BaseContract.BaseView> implements BaseContract.BasePresenter<T> {protected T mView; @Override public void attchView(T view) {if(view !=null){this.mView = view; }}@Override public void detachView() {if(mView !=null){this.mView = null; }} }
DuanziPresneter========================
package com.example.moni2.Presenter; import android.annotation.SuppressLint; import com.example.moni2.Modle.DuanziContract; import com.example.moni2.Modle.bena.DuanziBean; import com.example.moni2.Modle.bena.MyDataBean; import com.example.moni2.Modle.nmet.DuanziApi; import com.example.moni2.View.App.MyApp; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.functions.Consumer; import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; public class DuanziPresenter extends BasePresenter<DuanziContract.View> implements DuanziContract.Presenter {private DuanziApi duanziApi; @Inject public DuanziPresenter(DuanziApi duanziApi) {this.duanziApi = duanziApi; }@SuppressLint("CheckResult")@Override public void getDuanzi(String page) {duanziApi.getDuanzi(page).subscribeOn(Schedulers.io()).map(new Function<DuanziBean, List<DuanziBean.DataBean>>() {@Override public List<DuanziBean.DataBean> apply(DuanziBean duanziBean) throws Exception {return duanziBean.getData(); }}).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<List<DuanziBean.DataBean>>() {@Override public void accept(List<DuanziBean.DataBean> dataBeans) throws Exception {//DaoSession daoSession = MyApp.getDaoSession(); List<MyDataBean> list = new ArrayList<>(); //MyDataBeanDao myDataBeanDao = daoSession.getMyDataBeanDao(); for (int i = 0; i < dataBeans.size(); i++) {DuanziBean.DataBean dataBean = dataBeans.get(i); MyDataBean myDataBean = new MyDataBean(); myDataBean.setAge(dataBean.getUser().getAge() + ""); myDataBean.setCommentNum(dataBean.getCommentNum() + ""); myDataBean.setContent(dataBean.getContent()); myDataBean.setCreateTime(dataBean.getCreateTime()); myDataBean.setFans(dataBean.getUser().getFans()); myDataBean.setFollow(dataBean.getUser().isFollow()); myDataBean.setIcon(dataBean.getUser().getIcon() + ""); myDataBean.setImgUrls((String)(dataBean.getImgUrls())); list.add(myDataBean); }//myDataBeanDao.insertInTx(list); mView.onSuccess(dataBeans); }}); } }
HttpModle============================
package com.example.moni2.Modle.Imodle; import com.example.moni2.Modle.nmet.Api; import com.example.moni2.Modle.nmet.DuanziApi; import com.example.moni2.Modle.nmet.DuanziApiService; import com.example.moni2.Modle.nmet.MyInterceptor; import java.util.concurrent.TimeUnit; import dagger.Module; import dagger.Provides; import okhttp3.OkHttpClient; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; @Module public class HttpModule {@Provides OkHttpClient.Builder provideOkHttpClientBuilder() {return new OkHttpClient.Builder().connectTimeout(10, TimeUnit.SECONDS).readTimeout(20, TimeUnit.SECONDS).writeTimeout(20, TimeUnit.SECONDS); }@Provides DuanziApi provideDuanApi(OkHttpClient.Builder builder) {builder.addInterceptor(new MyInterceptor()); Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.baseUrl).addCallAdapterFactory(RxJava2CallAdapterFactory.create()).addConverterFactory(GsonConverterFactory.create()).client(builder.build()).build(); DuanziApiService duanziApiService = retrofit.create(DuanziApiService.class); return DuanziApi.getDuanziApi(duanziApiService); } }
Api=====================
package com.example.moni2.Modle.nmet; public interface Api {String baseUrl = "https://www.zhaoapi.cn/"; }
DuanziApi==========================
package com.example.moni2.Modle.nmet; import com.example.moni2.Modle.bena.DuanziBean; import io.reactivex.Observable; public class DuanziApi {private static DuanziApi duanziApi; private DuanziApiService duanziApiService; private DuanziApi(DuanziApiService duanziApiService) {this.duanziApiService = duanziApiService; }public static DuanziApi getDuanziApi(DuanziApiService duanziApiService) {if (duanziApi == null) {duanziApi = new DuanziApi(duanziApiService); }return duanziApi; }public Observable<DuanziBean> getDuanzi(String page) {return duanziApiService.getDuanzi(page); }}
DuanziApiService========================
package com.example.moni2.Modle.nmet; import com.example.moni2.Modle.bena.DuanziBean; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.POST; public interface DuanziApiService {@FormUrlEncoded @POST("quarter/getJokes")io.reactivex.Observable<DuanziBean> getDuanzi(@Field("page") String page); }
MyInterceptor=============================
package com.example.moni2.Modle.nmet; import java.io.IOException; import okhttp3.FormBody; import okhttp3.Interceptor; import okhttp3.Request; import okhttp3.Response; public class MyInterceptor implements Interceptor {@Override public Response intercept(Chain chain) throws IOException {//创建一个FormBody.Builder对象,用于添加公共参数 FormBody.Builder builder = new FormBody.Builder(); //先获取原始的请求 Request originalRequest = chain.request(); //获取原始请求里的请求体数据 FormBody formBody = (FormBody) originalRequest.body(); for (int i = 0; i < formBody.size(); i++) {//先把原始的请求体的参数添加到builder里 builder.add(formBody.name(i),formBody.value(i)); }//添加公共参数 builder.add("source","android"); builder.add("appVersion","100"); FormBody body = builder.build(); //创建一个新的Request Request request = new Request.Builder().url(originalRequest.url()).post(body).build(); Response response = chain.proceed(request); return response; }}
BeasContract==========================
package com.example.moni2.Modle.ui; public interface BaseContract {interface BasePresenter<T extends BaseView> {void attchView(T view); void detachView(); }interface BaseView {void showLoading(); void dismissLoading(); }}
HttpComponet=======================
package com.example.moni2.Modle.utils; import com.example.moni2.Modle.Imodle.HttpModule; import com.example.moni2.View.framgnet.DuanziFragment; import dagger.Component; @Component(modules = HttpModule.class) public interface HttpComponent {void inject(DuanziFragment duanziFragment); }
DuanziContract=====================
package com.example.moni2.Modle; import com.example.moni2.Modle.bena.DuanziBean; import com.example.moni2.Modle.ui.BaseContract; import java.util.List; public interface DuanziContract {interface View extends BaseContract.BaseView {void onSuccess(List<DuanziBean.DataBean> list); }interface Presenter extends BaseContract.BasePresenter<View> {void getDuanzi(String page); }}
DuanziBean=================================
package com.example.moni2.Modle.bena; import java.util.List; public class DuanziBean {/** * msg : 获取段子列表成功 * code : 0 * data : [{"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":null, * "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":null,"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":null, * "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":null,"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":"%E5%BC%A0%E9%9C%B2","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":"%E5%BC%A0%E9%9C%B2","praiseNum":"null"}}, * {"commentNum":null,"content":"\"fdfdsf\"","createTime":"2018-05-11T10:44:10","imgUrls":null,"jid":2615, * "praiseNum":null,"shareNum":null,"uid":12025,"user":{"age":null,"fans":"null","follow":false,"icon":null, * "nickname":"踩电门的猫","praiseNum":"null"}},{"commentNum":null,"content":"\"fdfdsf\"", * "createTime":"2018-05-11T10:31:14","imgUrls":null,"jid":2614,"praiseNum":null,"shareNum":null,"uid":12025, * "user":{"age":null,"fans":"null","follow":false,"icon":null,"nickname":"踩电门的猫","praiseNum":"null"}}, * {"commentNum":null,"content":"\"fdfdsf\"","createTime":"2018-05-11T09:33:42","imgUrls":null,"jid":2613, * "praiseNum":null,"shareNum":null,"uid":12025,"user":{"age":null,"fans":"null","follow":false,"icon":null, * "nickname":"踩电门的猫","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 : 是王旭阳 二百五 * createTime : 2018-05-14T19:10:04 * imgUrls : null * jid : 2622 * praiseNum : null * shareNum : null * uid : 11196 * user : {"age":null,"fans":"null","follow":false,"icon":null,"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 : null * nickname : null * praiseNum : null */ private Object age; private String fans; private boolean follow; private Object 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 Object getIcon() {return icon; }public void setIcon(Object 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; }}} }
MyDataBean===============================
package com.example.moni2.Modle.bena; import org.greenrobot.greendao.annotation.Entity; import org.greenrobot.greendao.annotation.Generated; import org.greenrobot.greendao.annotation.Id; import org.greenrobot.greendao.annotation.Property; @Entity public class MyDataBean {@Id private Long id; @Property private String commentNum; @Property private String content; @Property private String createTime; @Property private String imgUrls; @Property private int jid; @Property private String praiseNum; @Property private String shareNum; @Property private int uid; @Property private String age; @Property private String fans; @Property private boolean follow; @Property private String icon; @Property private String nickname; @Generated(hash = 1891157934)public MyDataBean(Long id, String commentNum, String content, String createTime, String imgUrls, int jid, String praiseNum, String shareNum, int uid, String age, String fans, boolean follow, String icon, String nickname) {this.id = id; this.commentNum = commentNum; this.content = content; this.createTime = createTime; this.imgUrls = imgUrls; this.jid = jid; this.praiseNum = praiseNum; this.shareNum = shareNum; this.uid = uid; this.age = age; this.fans = fans; this.follow = follow; this.icon = icon; this.nickname = nickname; }@Generated(hash = 650128772)public MyDataBean() {}public Long getId() {return this.id; }public void setId(Long id) {this.id = id; }public String getCommentNum() {return this.commentNum; }public void setCommentNum(String commentNum) {this.commentNum = commentNum; }public String getContent() {return this.content; }public void setContent(String content) {this.content = content; }public String getCreateTime() {return this.createTime; }public void setCreateTime(String createTime) {this.createTime = createTime; }public String getImgUrls() {return this.imgUrls; }public void setImgUrls(String imgUrls) {this.imgUrls = imgUrls; }public int getJid() {return this.jid; }public void setJid(int jid) {this.jid = jid; }public String getPraiseNum() {return this.praiseNum; }public void setPraiseNum(String praiseNum) {this.praiseNum = praiseNum; }public String getShareNum() {return this.shareNum; }public void setShareNum(String shareNum) {this.shareNum = shareNum; }public int getUid() {return this.uid; }public void setUid(int uid) {this.uid = uid; }public String getAge() {return this.age; }public void setAge(String age) {this.age = age; }public String getFans() {return this.fans; }public void setFans(String fans) {this.fans = fans; }public boolean getFollow() {return this.follow; }public void setFollow(boolean follow) {this.follow = follow; }public String getIcon() {return this.icon; }public void setIcon(String icon) {this.icon = icon; }public String getNickname() {return this.nickname; }public void setNickname(String nickname) {this.nickname = nickname; } }
一刻钟 简单段子实现相关推荐
- 简单粗暴的抓取糗百的段子——1
首先我们用到的软件是工具是pycharm,py3.6版本,工具包是 requests 和 bs4,没下载的抓紧时间哈~~~ 接着看下效果图吧~ 空行没有消除,跟题目很相仿~~~简单粗暴,这里只说方法 ...
- 简单实用的笑话段子小程序详细搭建教程(附源码),包含了视频、图片、段子三个模块
首先上个图,看下线上效果 扫码查看线上案例 线上服务器搭建这类的,这里就不多说了,有需要的可以看我之前的文章 >> 最新版短视频去水印小程序安装详细教程(附免费源码和去水印解析接口), ...
- 使用urllib2简单爬取并保存内涵吧内涵段子指定分页的的描述信息
对 内涵8的内涵段子 爬取每个分页上面显示的描述信息,按回车键继续对下一页进行爬取,输入quit退出爬取. 思路: 1. 爬取每个页面的源码 2. 对源码进行处理(使用正则),获取指定信息 3. 保存 ...
- 内容营销,不仅仅是写段子、拍视频这么简单
试想,我要向你推荐一款酷炫的跑鞋,以下哪种方式更吸引你的注意,让你产生购买冲动? 1.采用电视购物般排山倒海式的推销模式,每天给你介绍鞋子的精美外型.做工精良.材质一流.某某明星爱不释手,最后告诉你这 ...
- Python爬虫--抓取糗事百科段子
今天使用python爬虫实现了自动抓取糗事百科的段子,因为糗事百科不需要登录,抓取比较简单.程序每按一次回车输出一条段子,代码参考了 http://cuiqingcai.com/990.html 但该 ...
- 【运营干货】段子手打死也不会告诉广告主的事:一篇新媒体文案如何才能引发用户分享?...
前段时间,接触到一个涉及"用户在线分享"方面内容的项目,大家在前期的讨论中,经常会提及一些诸如"人为什么会在线分享"."什么样的人会在线分享" ...
- 从内涵段子到皮皮虾,娱乐App为何不能一鱼两吃?
文|ihahe 来源 | 螳螂财经(ID:TanglangFin) 郭德纲在说到语言类节目困境的时候,用唱歌跟说相声做了个对比,他说歌星可以用一首歌挣一辈子的钱,笑星却不行.在相声里一个包袱只能丢一次 ...
- 双代号网络图基础算法_9个简单数学算法在管理领域的运用
数学,一直被认为是一个很让人头疼的学科,好像除了专业人士外,其他人都会"谈之色变",网上有个段子道出了真相:"初二那年,我弯腰捡了一支笔,从此再没听懂过数学课" ...
- 爬虫实战:嗅事百科段子多页爬取
假如我们想爬取糗事百科( http://ww qiushibaike.com/)上的段子,也可以编写对应的Python网络爬虫实现. 本项目糗事百科网络爬虫的实现思路及步骤如下: 分析各页间的网址规律 ...
最新文章
- 掘金 php,PHP基本语法
- 笔记 - Ali Cloud 块存储简介
- Bit-Z转入GXS、PPS、SPHTX、EOS未到账解决方案
- python代码该怎么简化_Python开发简化代码的六大技巧
- 细数近年来机器学习研究的几大怪现状
- android封装oauth2,Android AccountAuthenticator和OAuth2
- 比较ArrayList和数组的区别
- LeetCode 221. 最大正方形(DP)
- astype强制转换不管用_用numpy和pandas进行数据分析
- 包教会一对一跟着CNS学单细胞测序(含空间转录组、chipseq、RNAseq、Atacseq 和外显子等)3月13日开始...
- python好用的模块_python常用的内置模块和常用的第三方模块
- Linux(Ubuntu) 下自然码加辅助码双拼输入的解决方案
- ASP编程实现各家快递公司订单状态查询
- Axure软件页面介绍
- 计算机网络简单理解总结
- 记在创口贴上的超实用IDEA Eclipse快捷方式
- ICG-PEG-OH 结构式,吲哚菁绿-聚乙二醇-羟基的相关说明
- css实现自适应之单位vh
- python替换word中的图片_python如何提取word内的图片
- AB153x(检测洛达芯片) 专治华强北
热门文章
- Springboot和Angular的CSRF防御
- 基于akka的flink RPC调用
- AI(006) - 笔记 - 回顾线性回归(Linear Regression)
- 计算机软件优化和安全维护,PC Reviver(电脑优化维护工具)
- Access denied for user ‘‘@‘localhost‘ (using password: NO)(史上最坑爹的一次)
- 正点原子USMART使用
- cisco 认证 linux,誉天 Cisco Linux 认证社区.PDF
- 0ctf-2018 heapstorm2详解
- 数学建模-多属性决策
- KBPC610-ASEMI整流方桥6A 1000V