diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 3fa9f1820d321f33422030529fdaf1071b69e3fb..e518cc4fbc09eb766724edddfb2d0825183b6315 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -10,6 +10,7 @@
+
+
diff --git a/.idea/libraries/animated_vector_drawable_23_3_0.xml b/.idea/libraries/animated_vector_drawable_23_3_0.xml
deleted file mode 100644
index a22e59e09142794b7bf4bcb102d86e6e7a8d30f5..0000000000000000000000000000000000000000
--- a/.idea/libraries/animated_vector_drawable_23_3_0.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/animated_vector_drawable_23_4_0.xml b/.idea/libraries/animated_vector_drawable_23_4_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c7190d33df02756ac3796d471f79d2c27f75c963
--- /dev/null
+++ b/.idea/libraries/animated_vector_drawable_23_4_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/appcompat_v7_23_3_0.xml b/.idea/libraries/appcompat_v7_23_3_0.xml
deleted file mode 100644
index c7190009d3b2cb9af69b7114c695a7ff042db0fa..0000000000000000000000000000000000000000
--- a/.idea/libraries/appcompat_v7_23_3_0.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/appcompat_v7_23_4_0.xml b/.idea/libraries/appcompat_v7_23_4_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1ed12beed1ad569ebacfd1e37e5ed10510d156e8
--- /dev/null
+++ b/.idea/libraries/appcompat_v7_23_4_0.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/paginate_0_5_1.xml b/.idea/libraries/paginate_0_5_1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..97ba6a922e3ac733dc4437ed1430a348c0d85da9
--- /dev/null
+++ b/.idea/libraries/paginate_0_5_1.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/recyclerview_v7_23_3_0.xml b/.idea/libraries/recyclerview_v7_23_3_0.xml
index d5e253d97800a2a1755876ce692c335e0b96e6c3..dea97663c69bcb214df5e2ce3d5c7cdde1e114bf 100644
--- a/.idea/libraries/recyclerview_v7_23_3_0.xml
+++ b/.idea/libraries/recyclerview_v7_23_3_0.xml
@@ -1,15 +1,17 @@
+
-
-
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/rxjava_1_1_5.xml b/.idea/libraries/rxjava_1_1_5.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ec590f73c6dcd649a411157f2d5d2d1815a065a2
--- /dev/null
+++ b/.idea/libraries/rxjava_1_1_5.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/support_annotations_23_3_0.xml b/.idea/libraries/support_annotations_23_3_0.xml
deleted file mode 100644
index 0b9c934998a86df3427bd6d0ce4a1bdd958b1df0..0000000000000000000000000000000000000000
--- a/.idea/libraries/support_annotations_23_3_0.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/support_annotations_23_4_0.xml b/.idea/libraries/support_annotations_23_4_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..08b64726edde6667bb16178e0c0529879f5c1257
--- /dev/null
+++ b/.idea/libraries/support_annotations_23_4_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/support_v4_23_3_0.xml b/.idea/libraries/support_v4_23_3_0.xml
deleted file mode 100644
index f7b3c117190b4c0953a363fae4e417d91b811d0e..0000000000000000000000000000000000000000
--- a/.idea/libraries/support_v4_23_3_0.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/support_v4_23_4_0.xml b/.idea/libraries/support_v4_23_4_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..053534a1409a81472ee769da47602e1eeb8c2263
--- /dev/null
+++ b/.idea/libraries/support_v4_23_4_0.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/support_vector_drawable_23_3_0.xml b/.idea/libraries/support_vector_drawable_23_3_0.xml
deleted file mode 100644
index 2b684df41a8eca22b7befab634cc0ef5c61d6223..0000000000000000000000000000000000000000
--- a/.idea/libraries/support_vector_drawable_23_3_0.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/support_vector_drawable_23_4_0.xml b/.idea/libraries/support_vector_drawable_23_4_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ec4bf90c135f447157dce714cdb1f1749e480447
--- /dev/null
+++ b/.idea/libraries/support_vector_drawable_23_4_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 729144be08480169fb8c207fb53ef41841a7d66e..91bd20ca9b057322d366f94310e99579040d00ce 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -5,6 +5,7 @@
+
\ No newline at end of file
diff --git a/.idea/statistic.xml b/.idea/statistic.xml
new file mode 100644
index 0000000000000000000000000000000000000000..557a4b196ac8b8494c0f71cb34d7223ed9b80a77
--- /dev/null
+++ b/.idea/statistic.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..94a25f7f4cb416c083d265558da75d457237d671
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 18c52d8042f2889e0c46e32fa79e7a4e0a1154e1..a00a3f5994ccf76846a88bb0bcec823b1ad4c6dd 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -41,11 +41,10 @@ buildscript {
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
+ compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile rootProject.ext.dependencies["junit"]
apt rootProject.ext.dependencies["dagger2-apt-compiler"]
- compile rootProject.ext.dependencies["cardview-v7"]
provided rootProject.ext.dependencies["javax.annotation"]
compile project(':arms')
-
+ compile rootProject.ext.dependencies["paginate"]
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index beff6ce32fc2eadf3e57c28bda26aab45187d28e..5d7f1cd0e41ec4c91ecfd23ee6e11ba90a50a430 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -18,7 +18,7 @@
android:supportsRtl="true"
android:theme="@style/AppTheme">
-
+
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/app/WEApplication.java b/app/src/main/java/me/jessyan/mvparms/demo/app/WEApplication.java
index d4841b2c3b7e269dc2155b8106b633fd1e4db55f..52cf744b342e543b9636ef77e8851e8355e235ac 100644
--- a/app/src/main/java/me/jessyan/mvparms/demo/app/WEApplication.java
+++ b/app/src/main/java/me/jessyan/mvparms/demo/app/WEApplication.java
@@ -1,13 +1,23 @@
package me.jessyan.mvparms.demo.app;
+import android.content.Context;
+
import com.jess.arms.base.BaseApplication;
import com.jess.arms.http.GlobeHttpResultHandler;
+import com.jess.arms.utils.UiUtils;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
import me.jessyan.mvparms.demo.di.component.AppComponent;
import me.jessyan.mvparms.demo.di.component.DaggerAppComponent;
import me.jessyan.mvparms.demo.di.module.CacheModule;
import me.jessyan.mvparms.demo.di.module.ServiceModule;
import me.jessyan.mvparms.demo.mvp.model.api.Api;
+import me.jessyan.rxerrorhandler.handler.listener.ResponseErroListener;
+import okhttp3.Interceptor;
+import okhttp3.Response;
import timber.log.Timber;
/**
@@ -51,8 +61,42 @@ public class WEApplication extends BaseApplication {
public GlobeHttpResultHandler getHttpResultHandler() {
return new GlobeHttpResultHandler() {
@Override
- public void onHttpResultResponse(String httpResult) {
- Timber.tag(TAG).w("GlobeHttpResultHandler------>" + httpResult);
+ public Response onHttpResultResponse(String httpResult, Interceptor.Chain chain, Response response) {
+ //这里可以先客户端一步拿到每一次http请求的结果,可以解析成json,做一些操作,如检测到token过期后
+ //重新请求token,并重新执行请求
+ try {
+ JSONArray array = new JSONArray(httpResult);
+ JSONObject object = (JSONObject) array.get(0);
+ String login = object.getString("login");
+ String avatar_url = object.getString("avatar_url");
+ Timber.tag(TAG).w("result ------>" + login + " || avatar_url------>" + avatar_url);
+
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ //这里如果发现token过期,可以先请求最新的token,然后在拿新的token去重新请求之前的http请求
+ // create a new request and modify it accordingly using the new token
+// Request newRequest = chain.request().newBuilder().header("token", newToken)
+// .build();
+//
+// // retry the request
+//
+// originalResponse.body().close();
+// return chain.proceed(newRequest);
+ //如果需要返回新的结果,则直接把response参数返回出去
+ return response;
+ }
+ };
+ }
+
+ @Override
+ protected ResponseErroListener getResponseErroListener() {
+ return new ResponseErroListener() {
+ @Override
+ public void handleResponseError(Context context, Exception e) {
+ Timber.tag(TAG).w("------------>" + e.getMessage());
+ UiUtils.SnackbarText("net error");
}
};
}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/di/component/AppComponent.java b/app/src/main/java/me/jessyan/mvparms/demo/di/component/AppComponent.java
index f8d5f7a8c04a62df4a0110b495a2fa119cb3cac6..edc8e4aac72c0a330e89cc6185a371dfbc18be69 100644
--- a/app/src/main/java/me/jessyan/mvparms/demo/di/component/AppComponent.java
+++ b/app/src/main/java/me/jessyan/mvparms/demo/di/component/AppComponent.java
@@ -2,6 +2,7 @@ package me.jessyan.mvparms.demo.di.component;
import android.app.Application;
+import com.google.gson.Gson;
import com.jess.arms.di.module.AppModule;
import com.jess.arms.di.module.ClientModule;
import com.jess.arms.di.module.ImageModule;
@@ -14,6 +15,7 @@ import me.jessyan.mvparms.demo.di.module.CacheModule;
import me.jessyan.mvparms.demo.di.module.ServiceModule;
import me.jessyan.mvparms.demo.mvp.model.api.cache.CacheManager;
import me.jessyan.mvparms.demo.mvp.model.api.service.ServiceManager;
+import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import okhttp3.OkHttpClient;
/**
@@ -30,8 +32,14 @@ public interface AppComponent {
//缓存管理器
CacheManager cacheManager();
+ //Rxjava错误处理管理类
+ RxErrorHandler rxErrorHandler();
+
OkHttpClient okHttpClient();
- //图片管理器
+ //图片管理器,用于加载图片的管理类,默认使用glide,使用策略模式,可替换框架
ImageLoader imageLoader();
+
+ //gson
+ Gson gson();
}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/di/component/UserComponent.java b/app/src/main/java/me/jessyan/mvparms/demo/di/component/UserComponent.java
new file mode 100644
index 0000000000000000000000000000000000000000..af9b946b10af79d9fa648d94ef1369e57a9a2369
--- /dev/null
+++ b/app/src/main/java/me/jessyan/mvparms/demo/di/component/UserComponent.java
@@ -0,0 +1,17 @@
+package me.jessyan.mvparms.demo.di.component;
+
+import com.jess.arms.di.scope.ActivityScope;
+
+import dagger.Component;
+import me.jessyan.mvparms.demo.di.module.UserModule;
+import me.jessyan.mvparms.demo.mvp.ui.activity.UserActivity;
+
+/**
+ * Created by jess on 9/4/16 11:17
+ * Contact with jess.yan.effort@gmail.com
+ */
+@ActivityScope
+@Component(modules = UserModule.class,dependencies = AppComponent.class)
+public interface UserComponent {
+ void inject(UserActivity activity);
+}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/di/module/UserModule.java b/app/src/main/java/me/jessyan/mvparms/demo/di/module/UserModule.java
new file mode 100644
index 0000000000000000000000000000000000000000..59ae9f32b53cf0b8a9d19851618d9b529a37cc88
--- /dev/null
+++ b/app/src/main/java/me/jessyan/mvparms/demo/di/module/UserModule.java
@@ -0,0 +1,35 @@
+package me.jessyan.mvparms.demo.di.module;
+
+import com.jess.arms.di.scope.ActivityScope;
+
+import dagger.Module;
+import dagger.Provides;
+import me.jessyan.mvparms.demo.mvp.contract.UserContract;
+import me.jessyan.mvparms.demo.mvp.model.UserModel;
+import me.jessyan.mvparms.demo.mvp.model.api.cache.CacheManager;
+import me.jessyan.mvparms.demo.mvp.model.api.service.ServiceManager;
+
+/**
+ * Created by jess on 9/4/16 11:10
+ * Contact with jess.yan.effort@gmail.com
+ */
+@Module
+public class UserModule {
+ private UserContract.View view;
+
+ public UserModule(UserContract.View view) {
+ this.view = view;
+ }
+
+ @ActivityScope
+ @Provides
+ UserContract.View provideUserView(){
+ return this.view;
+ }
+
+ @ActivityScope
+ @Provides
+ UserContract.Model provideUserModel(ServiceManager serviceManager, CacheManager cacheManager){
+ return new UserModel(serviceManager,cacheManager);
+ }
+}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/contract/UserContract.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/contract/UserContract.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e66b4c537b6565e6dd99ad3b0017c2ec4a3df11
--- /dev/null
+++ b/app/src/main/java/me/jessyan/mvparms/demo/mvp/contract/UserContract.java
@@ -0,0 +1,25 @@
+package me.jessyan.mvparms.demo.mvp.contract;
+
+import com.jess.arms.base.DefaultAdapter;
+import com.jess.arms.mvp.BaseView;
+
+import java.util.List;
+
+import me.jessyan.mvparms.demo.mvp.model.entity.User;
+import rx.Observable;
+
+/**
+ * Created by jess on 9/4/16 10:47
+ * Contact with jess.yan.effort@gmail.com
+ */
+public interface UserContract {
+ interface View extends BaseView {
+ void setAdapter(DefaultAdapter adapter);
+ void startLoadMore();
+ void endLoadMore();
+ }
+
+ interface Model {
+ Observable> getUsers(int lastIdQueried, boolean update);
+ }
+}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/UserModel.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/UserModel.java
new file mode 100644
index 0000000000000000000000000000000000000000..bef22aa3d98a48ee3996f8da2c1f46cab8222661
--- /dev/null
+++ b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/UserModel.java
@@ -0,0 +1,51 @@
+package me.jessyan.mvparms.demo.mvp.model;
+
+import com.jess.arms.mvp.BaseModel;
+
+import java.util.List;
+
+import io.rx_cache.DynamicKey;
+import io.rx_cache.EvictDynamicKey;
+import io.rx_cache.Reply;
+import me.jessyan.mvparms.demo.mvp.contract.UserContract;
+import me.jessyan.mvparms.demo.mvp.model.api.cache.CacheManager;
+import me.jessyan.mvparms.demo.mvp.model.api.cache.CommonCache;
+import me.jessyan.mvparms.demo.mvp.model.api.service.CommonService;
+import me.jessyan.mvparms.demo.mvp.model.api.service.ServiceManager;
+import me.jessyan.mvparms.demo.mvp.model.entity.User;
+import rx.Observable;
+import rx.functions.Func1;
+
+/**
+ * Created by jess on 9/4/16 10:56
+ * Contact with jess.yan.effort@gmail.com
+ */
+public class UserModel extends BaseModel implements UserContract.Model{
+ public static final int USERS_PER_PAGE = 10;
+ private CommonService mCommonService;
+ private CommonCache mCommonCache;
+
+ public UserModel(ServiceManager serviceManager, CacheManager cacheManager) {
+ super(serviceManager, cacheManager);
+ this.mCommonService = mServiceManager.getCommonService();
+ this.mCommonCache = mCacheManager.getCommonCache();
+ }
+
+
+ @Override
+ public Observable> getUsers(int lastIdQueried, boolean update) {
+ Observable> users = mCommonService
+ .getUsers(lastIdQueried, USERS_PER_PAGE);
+ //使用rxcache缓存,上拉刷新则不读取缓存,加载更多读取缓存
+ return mCommonCache
+ .getUsers(users
+ ,new DynamicKey(lastIdQueried)
+ ,new EvictDynamicKey(update))
+ .flatMap(new Func1>, Observable>>() {
+ @Override
+ public Observable> call(Reply> listReply) {
+ return Observable.just(listReply.getData());
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/api/Api.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/api/Api.java
index ff7d679990a8bf5125d91caffa3dce2d08e030a9..11c4a249c44f15e4cb6b17ee946535f77312a94b 100644
--- a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/api/Api.java
+++ b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/api/Api.java
@@ -5,5 +5,5 @@ package me.jessyan.mvparms.demo.mvp.model.api;
* contact with jess.yan.effort@gmail.com
*/
public interface Api {
- public static final String APP_DOMAIN = "http://baobab.wandoujia.com";
+ public static final String APP_DOMAIN = "https://api.github.com";
}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/api/cache/CommonCache.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/api/cache/CommonCache.java
index 96a932bae98654b834b49db292aec48077c308e7..3e1785d5594a49f681f164d412a7c1932be4afbf 100644
--- a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/api/cache/CommonCache.java
+++ b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/api/cache/CommonCache.java
@@ -1,15 +1,13 @@
package me.jessyan.mvparms.demo.mvp.model.api.cache;
+import java.util.List;
import java.util.concurrent.TimeUnit;
import io.rx_cache.DynamicKey;
import io.rx_cache.EvictProvider;
import io.rx_cache.LifeCache;
import io.rx_cache.Reply;
-import me.jessyan.mvparms.demo.mvp.model.entity.FindDetailEntity;
-import me.jessyan.mvparms.demo.mvp.model.entity.FindMoreEntity;
-import me.jessyan.mvparms.demo.mvp.model.entity.HomePicEntity;
-import me.jessyan.mvparms.demo.mvp.model.entity.HotStrategyEntity;
+import me.jessyan.mvparms.demo.mvp.model.entity.User;
import rx.Observable;
/**
@@ -18,17 +16,22 @@ import rx.Observable;
*/
public interface CommonCache {
- @LifeCache(duration = 2, timeUnit = TimeUnit.MINUTES)
- Observable> getDailyList(Observable service, DynamicKey publishTime, EvictProvider provider);
-
- @LifeCache(duration = 2, timeUnit = TimeUnit.MINUTES)
- Observable> getFindMore(Observable service, DynamicKey id, EvictProvider provider);
-
-
- @LifeCache(duration = 2, timeUnit = TimeUnit.MINUTES)
- Observable> getHotStrategy(Observable service, DynamicKey id, EvictProvider provider);
@LifeCache(duration = 2, timeUnit = TimeUnit.MINUTES)
- Observable> getFindDetail(Observable service, DynamicKey id, EvictProvider provider);
+ Observable>> getUsers(Observable> oUsers, DynamicKey idLastUserQueried, EvictProvider evictProvider);
+
+// @LifeCache(duration = 2, timeUnit = TimeUnit.MINUTES)
+// Observable> getDailyList(Observable service, DynamicKey publishTime, EvictProvider provider);
+//
+// @LifeCache(duration = 2, timeUnit = TimeUnit.MINUTES)
+// Observable> getFindMore(Observable service, DynamicKey id, EvictProvider provider);
+//
+//
+// @LifeCache(duration = 2, timeUnit = TimeUnit.MINUTES)
+// Observable> getHotStrategy(Observable service, DynamicKey id, EvictProvider provider);
+//
+//
+// @LifeCache(duration = 2, timeUnit = TimeUnit.MINUTES)
+// Observable> getFindDetail(Observable service, DynamicKey id, EvictProvider provider);
}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/api/service/CommonService.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/api/service/CommonService.java
index bc93125af9b53a484a06e87ce705f1c60689e40d..8ba21e3986b507075275ed2a97530b14270730c7 100644
--- a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/api/service/CommonService.java
+++ b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/api/service/CommonService.java
@@ -1,10 +1,11 @@
package me.jessyan.mvparms.demo.mvp.model.api.service;
-import me.jessyan.mvparms.demo.mvp.model.entity.FindDetailEntity;
-import me.jessyan.mvparms.demo.mvp.model.entity.FindMoreEntity;
-import me.jessyan.mvparms.demo.mvp.model.entity.HomePicEntity;
-import me.jessyan.mvparms.demo.mvp.model.entity.HotStrategyEntity;
+import java.util.List;
+
+import me.jessyan.mvparms.demo.mvp.model.entity.User;
import retrofit2.http.GET;
+import retrofit2.http.Headers;
+import retrofit2.http.Query;
import rx.Observable;
/**
@@ -13,15 +14,22 @@ import rx.Observable;
*/
public interface CommonService {
- @GET("/api/v2/feed?num=2&udid=26868b32e808498db32fd51fb422d00175e179df&vc=83")
- Observable getDailyList();
+ String HEADER_API_VERSION = "Accept: application/vnd.github.v3+json";
- @GET("/api/v2/categories?udid=26868b32e808498db32fd51fb422d00175e179df&vc=83")
- Observable getFindMore();
+ @Headers({HEADER_API_VERSION})
+ @GET("/users")
+ Observable> getUsers(@Query("since") int lastIdQueried, @Query("per_page") int perPage);
- @GET("/api/v3/ranklist?num=10&strategy=%s&udid=26868b32e808498db32fd51fb422d00175e179df&vc=83")
- Observable getHotStrategy();
- @GET("/api/v3/videos?categoryName=%s&strategy=%s&udid=26868b32e808498db32fd51fb422d00175e179df&vc=83")
- Observable getFindDetail();
+// @GET("/api/v2/feed?num=2&udid=26868b32e808498db32fd51fb422d00175e179df&vc=83")
+// Observable getDailyList();
+//
+// @GET("/api/v2/categories?udid=26868b32e808498db32fd51fb422d00175e179df&vc=83")
+// Observable getFindMore();
+//
+// @GET("/api/v3/ranklist?num=10&strategy=%s&udid=26868b32e808498db32fd51fb422d00175e179df&vc=83")
+// Observable getHotStrategy();
+//
+// @GET("/api/v3/videos?categoryName=%s&strategy=%s&udid=26868b32e808498db32fd51fb422d00175e179df&vc=83")
+// Observable getFindDetail();
}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/FindDetailEntity.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/FindDetailEntity.java
deleted file mode 100755
index c6a51836fb62a6eb507fdb8168c4a49637b0c0a1..0000000000000000000000000000000000000000
--- a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/FindDetailEntity.java
+++ /dev/null
@@ -1,507 +0,0 @@
-package me.jessyan.mvparms.demo.mvp.model.entity;
-
-import java.util.List;
-
-/**
- * Created by xhb on 2016/3/5.
- * 发现详情实体类
- */
-public class FindDetailEntity {
-
- /**
- * itemList : [{"type":"video","data":{"id":5860,"date":1457107200000,"idx":1,"title":"用 2000 颗弹珠造一个音乐盒","description":"瑞典 33 岁音乐家 Martin Molin 用 14 个月、2000 颗弹珠,制造出了这台庞大的木制音乐盒。音乐盒可以演奏不同风格,这支由他和钢珠音乐盒组成的乐队叫 Wintergatan,将于 2016 年夏天开始巡演~From Wintergatan","category":"创意","duration":272,"playUrl":"http://baobab.wdjcdn.com/1457061051621W.mp4","playInfo":[{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1457061051621W.mp4"}],"consumption":{"collectionCount":1228,"shareCount":3007,"playCount":0,"replyCount":88},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/cfc2ffd94f4c2234ff9f77eb99205791_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/cfc2ffd94f4c2234ff9f77eb99205791_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/62adccef5fbaaac92f124461ce8e5506_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/cfc2ffd94f4c2234ff9f77eb99205791_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5860","forWeibo":"http://wandou.im/1m0xed"},"campaign":null}},{"type":"video","data":{"id":5666,"date":1456675200000,"idx":4,"title":"1976:世界随音波而动","description":"创意短片「1976」试图表达的是一场关于\u201c预感\u201d与\u201c声音\u201d的冥想。这部超现实主义的短片,营造了一个因为未知的变动、预感而不安的氛围,并且充分地让声音去掌控画面的节奏。From Loop","category":"创意","duration":98,"playUrl":"http://baobab.wdjcdn.com/1456304477849485802164.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456304748222_5666_854x480.mp4"},{"height":410,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456304477849485802164.mp4"}],"consumption":{"collectionCount":479,"shareCount":450,"playCount":0,"replyCount":18},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/358b7996e5b51bccc1407d18fa7aeee5_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/358b7996e5b51bccc1407d18fa7aeee5_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/9f4fbc676d5cf6052b2f1bddf319076d_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/358b7996e5b51bccc1407d18fa7aeee5_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5666","forWeibo":"http://wandou.im/1jnb3x"},"campaign":null}},{"type":"video","data":{"id":5564,"date":1456416000000,"idx":2,"title":"超萌创意全息投影:最迷你的厨师","description":"世界上最迷你的厨师又来了~这一次他去到了寒冷的大雪天里,为餐前无聊等餐的客人制作精美甜点。虽然人小,但是做出来的美食分量可不能小!快来看看他独特又有趣的制作过程吧!From Skullmapping","category":"创意","duration":190,"playUrl":"http://baobab.wdjcdn.com/1455968234865481297704.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1455968670373_5564_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1455968234865481297704.mp4"}],"consumption":{"collectionCount":1725,"shareCount":3995,"playCount":0,"replyCount":45},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/8ad1f07d2a2a893a55360968e4ac26c3_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/8ad1f07d2a2a893a55360968e4ac26c3_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/42acbea88107183ae11cfa7da474a811_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/8ad1f07d2a2a893a55360968e4ac26c3_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5564","forWeibo":"http://wandou.im/1ig7kq"},"campaign":null}},{"type":"video","data":{"id":5652,"date":1456329600000,"idx":1,"title":"人类,为什么要这么欺负一个机器人","description":"2 月 23 日,波士顿动力发布了新版机器人 Atlas 的实拍视频。新版的双足人形机器人,具有超强的稳定性。不仅可以在雪地淡定行走,还可以平静地面对人类过分的调戏。From Boston Dynamics","category":"创意","duration":297,"playUrl":"http://baobab.wdjcdn.com/14562919706254.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456292234792_5652_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/14562919706254.mp4"}],"consumption":{"collectionCount":1800,"shareCount":5046,"playCount":0,"replyCount":152},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/8de93be9273b18116f03656368becc97_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/8de93be9273b18116f03656368becc97_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/37f38b49755013590dfe36cfb7c88504_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/8de93be9273b18116f03656368becc97_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5652","forWeibo":"http://wandou.im/1jlmgw"},"campaign":null}},{"type":"video","data":{"id":5444,"date":1455897600000,"idx":3,"title":"创意定格:一场奇妙的邂逅","description":"「Shiny」这支基调欢快的创意定格动画里,讲述了一场有些奇妙的邂逅。美女偶遇打劫,然后英雄救美送上天降的珍宝。不过虽然钻石闪耀,然而还是抵不过真爱的光芒~ From Daniel Cloud Campos","category":"创意","duration":233,"playUrl":"http://baobab.wdjcdn.com/1455863692561482408606.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1455863828938_5444_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1455863692561482408606.mp4"}],"consumption":{"collectionCount":1768,"shareCount":2471,"playCount":0,"replyCount":44},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/3dad7dcf3411dc2eab3c4bba20e353f2_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/3dad7dcf3411dc2eab3c4bba20e353f2_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/29bbda0ae97c644a8fc79196b7666fc6_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/3dad7dcf3411dc2eab3c4bba20e353f2_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5444","forWeibo":"http://wandou.im/1i2pef"},"campaign":null}},{"type":"video","data":{"id":4958,"date":1455811200000,"idx":2,"title":"广告的未来:潜入你的梦境","description":"无处不在的广告,已经成为了我们生活的一部分。随着科技的发展,广告在未来还可以通过怎样的途径接触到大众呢?也许它们会潜入你的梦境里。这支概念短片描绘了当梦境被广告影响,会是什么样。From STUDIO SMACK","category":"创意","duration":132,"playUrl":"http://baobab.wdjcdn.com/1453343058293462927516.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1453343235312_4958_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1453343058293462927516.mp4"}],"consumption":{"collectionCount":1119,"shareCount":1380,"playCount":0,"replyCount":47},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/1c1411e743301978c6a9efdae3d3240a_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/1c1411e743301978c6a9efdae3d3240a_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/73c56fa154869713f5c150581db8a18a_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/1c1411e743301978c6a9efdae3d3240a_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=4958","forWeibo":"http://wandou.im/19xclr"},"campaign":null}},{"type":"video","data":{"id":4968,"date":1455638400000,"idx":4,"title":"靠自己飞翔:人力直升机","description":"三十年无人问鼎的 AHS 西科尔斯基国际航空大奖,终于被 Aerovelo 团队获得。他们研发的这款人力直升机虽然只飞行了 64.1 秒,3.3 米高。但他们在努力展示,人的力量有多么伟大。From Aerovelo Inc","category":"创意","duration":104,"playUrl":"http://baobab.wdjcdn.com/1453356441147A(5).mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1453356923788_4968_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1453356441147A(5).mp4"}],"consumption":{"collectionCount":927,"shareCount":1714,"playCount":0,"replyCount":49},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/92c8ad89b179bf159fb5906261226412_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/92c8ad89b179bf159fb5906261226412_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/df726082895f16679d797369aa0c8bf2_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/92c8ad89b179bf159fb5906261226412_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=4968","forWeibo":"http://wandou.im/19zbco"},"campaign":null}},{"type":"video","data":{"id":4780,"date":1455552000000,"idx":2,"title":"令人头皮发麻的视效短片:蜘蛛的网","description":"视效短片「Loom」(织布机)通过精细、极具张力与冲击的视觉画面,配以代入感极强的声效,描绘了一个蜘蛛成功捕获猎物的过程。虽然看得人头皮发麻,但仍是十分美而震撼。From Polynoid","category":"创意","duration":320,"playUrl":"http://baobab.wdjcdn.com/145249343727751788411.mp4","playInfo":[{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/145249343727751788411.mp4"}],"consumption":{"collectionCount":1612,"shareCount":1877,"playCount":0,"replyCount":79},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/b5a55d91712a7f85f43539aec2b7a223_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/b5a55d91712a7f85f43539aec2b7a223_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/f580ef0b49f143064fd739080a97f746_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/b5a55d91712a7f85f43539aec2b7a223_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=4780","forWeibo":"http://wandou.im/17b1dt"},"campaign":null}},{"type":"video","data":{"id":4318,"date":1455422400000,"idx":5,"title":"周末号外丨点火好过节~","description":"对于甜蜜的情侣来说,每年的 2 月 14 日都是浪漫的情人节。可是并不是所有人都这么看的,不少人看来这天更像是火把节。短片中的点火虽然是圣诞传统,不过现在情人节里好像也有人这么过了呢~From Yule Log 2.0","category":"创意","duration":82,"playUrl":"http://baobab.wdjcdn.com/1451026206769454641049.mp4","playInfo":[{"height":480,"width":848,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1451026469044_4318_848x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1451026206769454641049.mp4"}],"consumption":{"collectionCount":290,"shareCount":155,"playCount":0,"replyCount":11},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/13dd20543c9e2d472ef61db112acd68c_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/13dd20543c9e2d472ef61db112acd68c_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/142dafd02a5d6945f37fabdddbb0ee9d_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/13dd20543c9e2d472ef61db112acd68c_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=4318","forWeibo":"http://wandou.im/13cdwh"},"campaign":null}},{"type":"video","data":{"id":4580,"date":1455336000000,"idx":4,"title":"周末号外丨迷幻花海:Slowly Rising","description":"荷兰音乐制作人 BEATSOFREEN 这首 Slowly Rising(缓慢生长)的 MV 由日本的 Hideki Inaba 创作。画面中源源不断的动植物混合体,创作出了花海般涌动的迷幻景象。From kanahebi","category":"创意","duration":210,"playUrl":"http://baobab.wdjcdn.com/1452062194844429162097.mp4","playInfo":[{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1452062194844429162097.mp4"}],"consumption":{"collectionCount":542,"shareCount":562,"playCount":0,"replyCount":24},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/3ec2288c8d0599339bad174785aba98e_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/3ec2288c8d0599339bad174785aba98e_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/d94bebc32d6fbc0ff96a247622752ec7_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/3ec2288c8d0599339bad174785aba98e_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=4580","forWeibo":"http://wandou.im/161hwj"},"campaign":null}}]
- * count : 10
- * total : 0
- * nextPageUrl : http://baobab.wandoujia.com/api/v3/videos?start=10&num=10&categoryName=%E5%88%9B%E6%84%8F&strategy=date
- */
-
- private int count;
- private int total;
- private String nextPageUrl;
- /**
- * type : video
- * data : {"id":5860,"date":1457107200000,"idx":1,"title":"用 2000 颗弹珠造一个音乐盒","description":"瑞典 33 岁音乐家 Martin Molin 用 14 个月、2000 颗弹珠,制造出了这台庞大的木制音乐盒。音乐盒可以演奏不同风格,这支由他和钢珠音乐盒组成的乐队叫 Wintergatan,将于 2016 年夏天开始巡演~From Wintergatan","category":"创意","duration":272,"playUrl":"http://baobab.wdjcdn.com/1457061051621W.mp4","playInfo":[{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1457061051621W.mp4"}],"consumption":{"collectionCount":1228,"shareCount":3007,"playCount":0,"replyCount":88},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/cfc2ffd94f4c2234ff9f77eb99205791_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/cfc2ffd94f4c2234ff9f77eb99205791_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/62adccef5fbaaac92f124461ce8e5506_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/cfc2ffd94f4c2234ff9f77eb99205791_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5860","forWeibo":"http://wandou.im/1m0xed"},"campaign":null}
- */
-
- private List itemList;
-
- public void setCount(int count) {
- this.count = count;
- }
-
- public void setTotal(int total) {
- this.total = total;
- }
-
- public void setNextPageUrl(String nextPageUrl) {
- this.nextPageUrl = nextPageUrl;
- }
-
- public void setItemList(List itemList) {
- this.itemList = itemList;
- }
-
- public int getCount() {
- return count;
- }
-
- public int getTotal() {
- return total;
- }
-
- public String getNextPageUrl() {
- return nextPageUrl;
- }
-
- public List getItemList() {
- return itemList;
- }
-
- public static class ItemListEntity {
- private String type;
- /**
- * id : 5860
- * date : 1457107200000
- * idx : 1
- * title : 用 2000 颗弹珠造一个音乐盒
- * description : 瑞典 33 岁音乐家 Martin Molin 用 14 个月、2000 颗弹珠,制造出了这台庞大的木制音乐盒。音乐盒可以演奏不同风格,这支由他和钢珠音乐盒组成的乐队叫 Wintergatan,将于 2016 年夏天开始巡演~From Wintergatan
- * category : 创意
- * duration : 272
- * playUrl : http://baobab.wdjcdn.com/1457061051621W.mp4
- * playInfo : [{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1457061051621W.mp4"}]
- * consumption : {"collectionCount":1228,"shareCount":3007,"playCount":0,"replyCount":88}
- * promotion : null
- * waterMarks : null
- * provider : {"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"}
- * author : null
- * adTrack : null
- * shareAdTrack : null
- * favoriteAdTrack : null
- * webAdTrack : null
- * cover : {"feed":"http://img.wdjimg.com/image/video/cfc2ffd94f4c2234ff9f77eb99205791_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/cfc2ffd94f4c2234ff9f77eb99205791_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/62adccef5fbaaac92f124461ce8e5506_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/cfc2ffd94f4c2234ff9f77eb99205791_0_0.jpeg"}
- * webUrl : {"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5860","forWeibo":"http://wandou.im/1m0xed"}
- * campaign : null
- */
-
- private DataEntity data;
-
- public void setType(String type) {
- this.type = type;
- }
-
- public void setData(DataEntity data) {
- this.data = data;
- }
-
- public String getType() {
- return type;
- }
-
- public DataEntity getData() {
- return data;
- }
-
- public static class DataEntity {
- private int id;
- private long date;
- private int idx;
- private String title;
- private String description;
- private String category;
- private int duration;
- private String playUrl;
- /**
- * collectionCount : 1228
- * shareCount : 3007
- * playCount : 0
- * replyCount : 88
- */
-
- private ConsumptionEntity consumption;
- private Object promotion;
- private Object waterMarks;
- /**
- * name : YouTube
- * alias : youtube
- * icon : http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png
- */
-
- private ProviderEntity provider;
- private Object author;
- private Object adTrack;
- private Object shareAdTrack;
- private Object favoriteAdTrack;
- private Object webAdTrack;
- /**
- * feed : http://img.wdjimg.com/image/video/cfc2ffd94f4c2234ff9f77eb99205791_0_0.jpeg
- * detail : http://img.wdjimg.com/image/video/cfc2ffd94f4c2234ff9f77eb99205791_0_0.jpeg
- * blurred : http://img.wdjimg.com/image/video/62adccef5fbaaac92f124461ce8e5506_0_0.jpeg
- * sharing : http://img.wdjimg.com/image/video/cfc2ffd94f4c2234ff9f77eb99205791_0_0.jpeg
- */
-
- private CoverEntity cover;
- /**
- * raw : http://www.wandoujia.com/eyepetizer/detail.html?vid=5860
- * forWeibo : http://wandou.im/1m0xed
- */
-
- private WebUrlEntity webUrl;
- private Object campaign;
- /**
- * height : 720
- * width : 1280
- * name : 高清
- * type : high
- * url : http://baobab.wdjcdn.com/1457061051621W.mp4
- */
-
- private List playInfo;
-
- public void setId(int id) {
- this.id = id;
- }
-
- public void setDate(long date) {
- this.date = date;
- }
-
- public void setIdx(int idx) {
- this.idx = idx;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public void setCategory(String category) {
- this.category = category;
- }
-
- public void setDuration(int duration) {
- this.duration = duration;
- }
-
- public void setPlayUrl(String playUrl) {
- this.playUrl = playUrl;
- }
-
- public void setConsumption(ConsumptionEntity consumption) {
- this.consumption = consumption;
- }
-
- public void setPromotion(Object promotion) {
- this.promotion = promotion;
- }
-
- public void setWaterMarks(Object waterMarks) {
- this.waterMarks = waterMarks;
- }
-
- public void setProvider(ProviderEntity provider) {
- this.provider = provider;
- }
-
- public void setAuthor(Object author) {
- this.author = author;
- }
-
- public void setAdTrack(Object adTrack) {
- this.adTrack = adTrack;
- }
-
- public void setShareAdTrack(Object shareAdTrack) {
- this.shareAdTrack = shareAdTrack;
- }
-
- public void setFavoriteAdTrack(Object favoriteAdTrack) {
- this.favoriteAdTrack = favoriteAdTrack;
- }
-
- public void setWebAdTrack(Object webAdTrack) {
- this.webAdTrack = webAdTrack;
- }
-
- public void setCover(CoverEntity cover) {
- this.cover = cover;
- }
-
- public void setWebUrl(WebUrlEntity webUrl) {
- this.webUrl = webUrl;
- }
-
- public void setCampaign(Object campaign) {
- this.campaign = campaign;
- }
-
- public void setPlayInfo(List playInfo) {
- this.playInfo = playInfo;
- }
-
- public int getId() {
- return id;
- }
-
- public long getDate() {
- return date;
- }
-
- public int getIdx() {
- return idx;
- }
-
- public String getTitle() {
- return title;
- }
-
- public String getDescription() {
- return description;
- }
-
- public String getCategory() {
- return category;
- }
-
- public int getDuration() {
- return duration;
- }
-
- public String getPlayUrl() {
- return playUrl;
- }
-
- public ConsumptionEntity getConsumption() {
- return consumption;
- }
-
- public Object getPromotion() {
- return promotion;
- }
-
- public Object getWaterMarks() {
- return waterMarks;
- }
-
- public ProviderEntity getProvider() {
- return provider;
- }
-
- public Object getAuthor() {
- return author;
- }
-
- public Object getAdTrack() {
- return adTrack;
- }
-
- public Object getShareAdTrack() {
- return shareAdTrack;
- }
-
- public Object getFavoriteAdTrack() {
- return favoriteAdTrack;
- }
-
- public Object getWebAdTrack() {
- return webAdTrack;
- }
-
- public CoverEntity getCover() {
- return cover;
- }
-
- public WebUrlEntity getWebUrl() {
- return webUrl;
- }
-
- public Object getCampaign() {
- return campaign;
- }
-
- public List getPlayInfo() {
- return playInfo;
- }
-
- public static class ConsumptionEntity {
- private int collectionCount;
- private int shareCount;
- private int playCount;
- private int replyCount;
-
- public void setCollectionCount(int collectionCount) {
- this.collectionCount = collectionCount;
- }
-
- public void setShareCount(int shareCount) {
- this.shareCount = shareCount;
- }
-
- public void setPlayCount(int playCount) {
- this.playCount = playCount;
- }
-
- public void setReplyCount(int replyCount) {
- this.replyCount = replyCount;
- }
-
- public int getCollectionCount() {
- return collectionCount;
- }
-
- public int getShareCount() {
- return shareCount;
- }
-
- public int getPlayCount() {
- return playCount;
- }
-
- public int getReplyCount() {
- return replyCount;
- }
- }
-
- public static class ProviderEntity {
- private String name;
- private String alias;
- private String icon;
-
- public void setName(String name) {
- this.name = name;
- }
-
- public void setAlias(String alias) {
- this.alias = alias;
- }
-
- public void setIcon(String icon) {
- this.icon = icon;
- }
-
- public String getName() {
- return name;
- }
-
- public String getAlias() {
- return alias;
- }
-
- public String getIcon() {
- return icon;
- }
- }
-
- public static class CoverEntity {
- private String feed;
- private String detail;
- private String blurred;
- private String sharing;
-
- public void setFeed(String feed) {
- this.feed = feed;
- }
-
- public void setDetail(String detail) {
- this.detail = detail;
- }
-
- public void setBlurred(String blurred) {
- this.blurred = blurred;
- }
-
- public void setSharing(String sharing) {
- this.sharing = sharing;
- }
-
- public String getFeed() {
- return feed;
- }
-
- public String getDetail() {
- return detail;
- }
-
- public String getBlurred() {
- return blurred;
- }
-
- public String getSharing() {
- return sharing;
- }
- }
-
- public static class WebUrlEntity {
- private String raw;
- private String forWeibo;
-
- public void setRaw(String raw) {
- this.raw = raw;
- }
-
- public void setForWeibo(String forWeibo) {
- this.forWeibo = forWeibo;
- }
-
- public String getRaw() {
- return raw;
- }
-
- public String getForWeibo() {
- return forWeibo;
- }
- }
-
- public static class PlayInfoEntity {
- private int height;
- private int width;
- private String name;
- private String type;
- private String url;
-
- public void setHeight(int height) {
- this.height = height;
- }
-
- public void setWidth(int width) {
- this.width = width;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public int getHeight() {
- return height;
- }
-
- public int getWidth() {
- return width;
- }
-
- public String getName() {
- return name;
- }
-
- public String getType() {
- return type;
- }
-
- public String getUrl() {
- return url;
- }
- }
- }
- }
-}
-
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/FindMoreEntity.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/FindMoreEntity.java
deleted file mode 100755
index a87ea5274ff5e8742b23efd50c396945be69a04c..0000000000000000000000000000000000000000
--- a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/FindMoreEntity.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package me.jessyan.mvparms.demo.mvp.model.entity;
-
-/**
- * Created by xhb on 2016/3/2.
- * 发现更多实体类
- */
-public class FindMoreEntity {
- /**
- * id : 2
- * name : 创意
- * alias : null
- * bgPicture : http://img.wdjimg.com/image/video/e8f7e96c58348e4dd6daede64721d02d_0_0.jpeg
- * bgColor :
- */
-
- private int id;
- private String name;
- private Object alias;
- private String bgPicture;
- private String bgColor;
-
- public void setId(int id) {
- this.id = id;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public void setAlias(Object alias) {
- this.alias = alias;
- }
-
- public void setBgPicture(String bgPicture) {
- this.bgPicture = bgPicture;
- }
-
- public void setBgColor(String bgColor) {
- this.bgColor = bgColor;
- }
-
- public int getId() {
- return id;
- }
-
- public String getName() {
- return name;
- }
-
- public Object getAlias() {
- return alias;
- }
-
- public String getBgPicture() {
- return bgPicture;
- }
-
- public String getBgColor() {
- return bgColor;
- }
-}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/HomePicEntity.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/HomePicEntity.java
deleted file mode 100755
index 99029b52e3e80ced6a1a95a6e38b98a322b67538..0000000000000000000000000000000000000000
--- a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/HomePicEntity.java
+++ /dev/null
@@ -1,568 +0,0 @@
-package me.jessyan.mvparms.demo.mvp.model.entity;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * Created by ASUS on 2016/2/29.
- */
-public class HomePicEntity {
-
- /**
- * date : 1456675200000
- * publishTime : 1456675200000
- * type : normal
- * count : 6
- * itemList : [{"type":"video","data":{"id":5754,"date":1456675200000,"idx":1,"title":"奥斯卡号外丨恭喜小李子终于申奥成功","description":"恭喜小李子结束了长达 20 年的陪跑~最新采访小李时,谈到为何投身环保,同时还坚持演戏。他说作为明星很多时候说话不受重视,但至少站出来说话能被听到,如果不演戏就没人听他说这些环保的事了。From Burger Fiction","category":"综合","duration":454,"playUrl":"http://baobab.wdjcdn.com/1456717752764486381173.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456718039738_5754_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456717752764486381173.mp4"}],"consumption":{"collectionCount":602,"shareCount":2628,"playCount":0,"replyCount":51},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/e7686329d482d4bfa939acbcd53060ea_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5754","forWeibo":"http://wandou.im/1l1ibm"},"campaign":null}}]
- */
-
- private String nextPageUrl;
-
- public String getNextPageUrl() {
- return nextPageUrl;
- }
-
- public void setNextPageUrl(String nextPageUrl) {
- this.nextPageUrl = nextPageUrl;
- }
-
- private List issueList;
-
- public void setIssueList(List issueList) {
- this.issueList = issueList;
- }
-
- public List getIssueList() {
- return issueList;
- }
-
- public static class IssueListEntity {
- private long date;
- private long publishTime;
- private String type;
- private int count;
- /**
- * type : video
- * data : {"id":5754,"date":1456675200000,"idx":1,"title":"奥斯卡号外丨恭喜小李子终于申奥成功","description":"恭喜小李子结束了长达 20 年的陪跑~最新采访小李时,谈到为何投身环保,同时还坚持演戏。他说作为明星很多时候说话不受重视,但至少站出来说话能被听到,如果不演戏就没人听他说这些环保的事了。From Burger Fiction","category":"综合","duration":454,"playUrl":"http://baobab.wdjcdn.com/1456717752764486381173.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456718039738_5754_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456717752764486381173.mp4"}],"consumption":{"collectionCount":602,"shareCount":2628,"playCount":0,"replyCount":51},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/e7686329d482d4bfa939acbcd53060ea_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5754","forWeibo":"http://wandou.im/1l1ibm"},"campaign":null}
- */
-
- private List itemList;
-
- public void setDate(long date) {
- this.date = date;
- }
-
- public void setPublishTime(long publishTime) {
- this.publishTime = publishTime;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public void setCount(int count) {
- this.count = count;
- }
-
- public void setItemList(List itemList) {
- this.itemList = itemList;
- }
-
- public long getDate() {
- return date;
- }
-
- public long getPublishTime() {
- return publishTime;
- }
-
- public String getType() {
- return type;
- }
-
- public int getCount() {
- return count;
- }
-
- public List getItemList() {
- return itemList;
- }
-
- public static class ItemListEntity implements Serializable {
- private String type;
- private String image;
-
- public String getImage() {
- return image;
- }
-
- public void setImage(String image) {
- this.image = image;
- }
-
- /**
- * id : 5754
- * date : 1456675200000
- * idx : 1
- * title : 奥斯卡号外丨恭喜小李子终于申奥成功
- * description : 恭喜小李子结束了长达 20 年的陪跑~最新采访小李时,谈到为何投身环保,同时还坚持演戏。他说作为明星很多时候说话不受重视,但至少站出来说话能被听到,如果不演戏就没人听他说这些环保的事了。From Burger Fiction
- * category : 综合
- * duration : 454
- * playUrl : http://baobab.wdjcdn.com/1456717752764486381173.mp4
- * playInfo : [{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456718039738_5754_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456717752764486381173.mp4"}]
- * consumption : {"collectionCount":602,"shareCount":2628,"playCount":0,"replyCount":51}
- * promotion : null
- * waterMarks : null
- * provider : {"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"}
- * author : null
- * adTrack : null
- * shareAdTrack : null
- * favoriteAdTrack : null
- * webAdTrack : null
- * cover : {"feed":"http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/e7686329d482d4bfa939acbcd53060ea_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg"}
- * webUrl : {"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5754","forWeibo":"http://wandou.im/1l1ibm"}
- * campaign : null
- */
-
- private DataEntity data;
-
- public void setType(String type) {
- this.type = type;
- }
-
- public void setData(DataEntity data) {
- this.data = data;
- }
-
- public String getType() {
- return type;
- }
-
- public DataEntity getData() {
- return data;
- }
-
- public static class DataEntity {
- private String image;
-
- public String getImage() {
- return image;
- }
-
- public void setImage(String image) {
- this.image = image;
- }
-
- private int id;
- private long date;
- private int idx;
- private String title;
- private String description;
- private String category;
- private int duration;
- private String playUrl;
- private String text;
-
- public String getText() {
- return text;
- }
-
- public void setText(String text) {
- this.text = text;
- }
-
- /**
- * collectionCount : 602
- * shareCount : 2628
- * playCount : 0
- * replyCount : 51
- */
-
- private ConsumptionEntity consumption;
- private Object promotion;
- private Object waterMarks;
- /**
- * name : Vimeo
- * alias : vimeo
- * icon : http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png
- */
-
- private ProviderEntity provider;
- private Object author;
- private Object adTrack;
- private Object shareAdTrack;
- private Object favoriteAdTrack;
- private Object webAdTrack;
- /**
- * feed : http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg
- * detail : http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg
- * blurred : http://img.wdjimg.com/image/video/e7686329d482d4bfa939acbcd53060ea_0_0.jpeg
- * sharing : http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg
- */
-
- private CoverEntity cover;
- /**
- * raw : http://www.wandoujia.com/eyepetizer/detail.html?vid=5754
- * forWeibo : http://wandou.im/1l1ibm
- */
-
- private WebUrlEntity webUrl;
- private Object campaign;
- /**
- * height : 480
- * width : 854
- * name : 标清
- * type : normal
- * url : http://baobab.wdjcdn.com/1456718039738_5754_854x480.mp4
- */
-
- private List playInfo;
-
- public void setId(int id) {
- this.id = id;
- }
-
- public void setDate(long date) {
- this.date = date;
- }
-
- public void setIdx(int idx) {
- this.idx = idx;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public void setCategory(String category) {
- this.category = category;
- }
-
- public void setDuration(int duration) {
- this.duration = duration;
- }
-
- public void setPlayUrl(String playUrl) {
- this.playUrl = playUrl;
- }
-
- public void setConsumption(ConsumptionEntity consumption) {
- this.consumption = consumption;
- }
-
- public void setPromotion(Object promotion) {
- this.promotion = promotion;
- }
-
- public void setWaterMarks(Object waterMarks) {
- this.waterMarks = waterMarks;
- }
-
- public void setProvider(ProviderEntity provider) {
- this.provider = provider;
- }
-
- public void setAuthor(Object author) {
- this.author = author;
- }
-
- public void setAdTrack(Object adTrack) {
- this.adTrack = adTrack;
- }
-
- public void setShareAdTrack(Object shareAdTrack) {
- this.shareAdTrack = shareAdTrack;
- }
-
- public void setFavoriteAdTrack(Object favoriteAdTrack) {
- this.favoriteAdTrack = favoriteAdTrack;
- }
-
- public void setWebAdTrack(Object webAdTrack) {
- this.webAdTrack = webAdTrack;
- }
-
- public void setCover(CoverEntity cover) {
- this.cover = cover;
- }
-
- public void setWebUrl(WebUrlEntity webUrl) {
- this.webUrl = webUrl;
- }
-
- public void setCampaign(Object campaign) {
- this.campaign = campaign;
- }
-
- public void setPlayInfo(List playInfo) {
- this.playInfo = playInfo;
- }
-
- public int getId() {
- return id;
- }
-
- public long getDate() {
- return date;
- }
-
- public int getIdx() {
- return idx;
- }
-
- public String getTitle() {
- return title;
- }
-
- public String getDescription() {
- return description;
- }
-
- public String getCategory() {
- return category;
- }
-
- public int getDuration() {
- return duration;
- }
-
- public String getPlayUrl() {
- return playUrl;
- }
-
- public ConsumptionEntity getConsumption() {
- return consumption;
- }
-
- public Object getPromotion() {
- return promotion;
- }
-
- public Object getWaterMarks() {
- return waterMarks;
- }
-
- public ProviderEntity getProvider() {
- return provider;
- }
-
- public Object getAuthor() {
- return author;
- }
-
- public Object getAdTrack() {
- return adTrack;
- }
-
- public Object getShareAdTrack() {
- return shareAdTrack;
- }
-
- public Object getFavoriteAdTrack() {
- return favoriteAdTrack;
- }
-
- public Object getWebAdTrack() {
- return webAdTrack;
- }
-
- public CoverEntity getCover() {
- return cover;
- }
-
- public WebUrlEntity getWebUrl() {
- return webUrl;
- }
-
- public Object getCampaign() {
- return campaign;
- }
-
- public List getPlayInfo() {
- return playInfo;
- }
-
- public static class ConsumptionEntity {
- private int collectionCount;
- private int shareCount;
- private int playCount;
- private int replyCount;
-
- public void setCollectionCount(int collectionCount) {
- this.collectionCount = collectionCount;
- }
-
- public void setShareCount(int shareCount) {
- this.shareCount = shareCount;
- }
-
- public void setPlayCount(int playCount) {
- this.playCount = playCount;
- }
-
- public void setReplyCount(int replyCount) {
- this.replyCount = replyCount;
- }
-
- public int getCollectionCount() {
- return collectionCount;
- }
-
- public int getShareCount() {
- return shareCount;
- }
-
- public int getPlayCount() {
- return playCount;
- }
-
- public int getReplyCount() {
- return replyCount;
- }
- }
-
- public static class ProviderEntity {
- private String name;
- private String alias;
- private String icon;
-
- public void setName(String name) {
- this.name = name;
- }
-
- public void setAlias(String alias) {
- this.alias = alias;
- }
-
- public void setIcon(String icon) {
- this.icon = icon;
- }
-
- public String getName() {
- return name;
- }
-
- public String getAlias() {
- return alias;
- }
-
- public String getIcon() {
- return icon;
- }
- }
-
- public static class CoverEntity {
- private String feed;
- private String detail;
- private String blurred;
- private String sharing;
-
- public void setFeed(String feed) {
- this.feed = feed;
- }
-
- public void setDetail(String detail) {
- this.detail = detail;
- }
-
- public void setBlurred(String blurred) {
- this.blurred = blurred;
- }
-
- public void setSharing(String sharing) {
- this.sharing = sharing;
- }
-
- public String getFeed() {
- return feed;
- }
-
- public String getDetail() {
- return detail;
- }
-
- public String getBlurred() {
- return blurred;
- }
-
- public String getSharing() {
- return sharing;
- }
- }
-
- public static class WebUrlEntity {
- private String raw;
- private String forWeibo;
-
- public void setRaw(String raw) {
- this.raw = raw;
- }
-
- public void setForWeibo(String forWeibo) {
- this.forWeibo = forWeibo;
- }
-
- public String getRaw() {
- return raw;
- }
-
- public String getForWeibo() {
- return forWeibo;
- }
- }
-
- public static class PlayInfoEntity {
- private int height;
- private int width;
- private String name;
- private String type;
- private String url;
-
- public void setHeight(int height) {
- this.height = height;
- }
-
- public void setWidth(int width) {
- this.width = width;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public int getHeight() {
- return height;
- }
-
- public int getWidth() {
- return width;
- }
-
- public String getName() {
- return name;
- }
-
- public String getType() {
- return type;
- }
-
- public String getUrl() {
- return url;
- }
- }
- }
- }
- }
-}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/HotStrategyEntity.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/HotStrategyEntity.java
deleted file mode 100755
index 89793dc529fd4a80adffc4bbb9a3c66b3c5a8282..0000000000000000000000000000000000000000
--- a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/HotStrategyEntity.java
+++ /dev/null
@@ -1,507 +0,0 @@
-package me.jessyan.mvparms.demo.mvp.model.entity;
-
-import java.util.List;
-
-/**
- * Created by xhb on 2016/3/3.
- * 热门排行实体类
- */
-public class HotStrategyEntity {
-
-
- /**
- * itemList : [{"type":"video","data":{"id":5630,"date":1456416000000,"idx":1,"title":"我为什么要健身?","description":"我为什么要健身?难道真的只是为了减肥吗?短片「如何四步轻松减肥」中,男主角的故事并不只是一个肤浅的减肥励志故事。在健身房里流了一年的汗,不仅是为了外表,也是为了内心。From Benjamin Berman","category":"剧情","duration":423,"playUrl":"http://baobab.wdjcdn.com/1456459181808howtoloseweight_x264.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456459550061_5630_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456459181808howtoloseweight_x264.mp4"}],"consumption":{"collectionCount":4983,"shareCount":8792,"playCount":0,"replyCount":119},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/60a772984b6086faa90fa4f6a8a2412e_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/60a772984b6086faa90fa4f6a8a2412e_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/07cbb50d55041eb5e97f5091cac59d64_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/60a772984b6086faa90fa4f6a8a2412e_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5630","forWeibo":"http://wandou.im/1jbvwz"},"campaign":null}},{"type":"video","data":{"id":5652,"date":1456329600000,"idx":1,"title":"人类,为什么要这么欺负一个机器人","description":"2 月 23 日,波士顿动力发布了新版机器人 Atlas 的实拍视频。新版的双足人形机器人,具有超强的稳定性。不仅可以在雪地淡定行走,还可以平静地面对人类过分的调戏。From Boston Dynamics","category":"创意","duration":297,"playUrl":"http://baobab.wdjcdn.com/14562919706254.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456292234792_5652_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/14562919706254.mp4"}],"consumption":{"collectionCount":1707,"shareCount":4865,"playCount":0,"replyCount":150},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/8de93be9273b18116f03656368becc97_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/8de93be9273b18116f03656368becc97_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/37f38b49755013590dfe36cfb7c88504_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/8de93be9273b18116f03656368becc97_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5652","forWeibo":"http://wandou.im/1jlmgw"},"campaign":null}},{"type":"video","data":{"id":5754,"date":1456675200000,"idx":1,"title":"奥斯卡号外丨恭喜小李子终于申奥成功","description":"恭喜小李子结束了长达 20 年的陪跑~最新采访小李时,谈到为何投身环保,同时还坚持演戏。他说作为明星很多时候说话不受重视,但至少站出来说话能被听到,如果不演戏就没人听他说这些环保的事了。From Burger Fiction","category":"综合","duration":454,"playUrl":"http://baobab.wdjcdn.com/1456717752764486381173.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456718039738_5754_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456717752764486381173.mp4"}],"consumption":{"collectionCount":1476,"shareCount":4651,"playCount":0,"replyCount":83},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/e7686329d482d4bfa939acbcd53060ea_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/3141c1e1a154d17a5742eb9ab4a8723b_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5754","forWeibo":"http://wandou.im/1l1ibm"},"campaign":null}},{"type":"video","data":{"id":5746,"date":1456761600000,"idx":1,"title":"奥斯卡最佳动画短片「熊的故事」","description":"这部来自智利的作品「Bear Story」(熊的故事)刚刚获得了奥斯卡最佳动画短片。故事灵感来自导演的祖父被驱逐出境的经历,熊的遭遇隐喻了智利独裁政治下带来的家庭分裂与伤害。From Patricio Ramos","category":"动画","duration":618,"playUrl":"http://baobab.wdjcdn.com/1456734464766B(13).mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456735125658_5746_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456734464766B(13).mp4"}],"consumption":{"collectionCount":1798,"shareCount":3769,"playCount":0,"replyCount":59},"promotion":null,"waterMarks":null,"provider":{"name":"哔哩哔哩动画","alias":"bilibili","icon":"http://img.wdjimg.com/mms/icon/v1/4/cd/b968890a2b3e9ab5ae234175681f8cd4_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/c311164a1d9def0e6d4d64945fdd3af1_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/c311164a1d9def0e6d4d64945fdd3af1_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/efd5fea0170ff2922a1bdf4cad6e7423_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/c311164a1d9def0e6d4d64945fdd3af1_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5746","forWeibo":"http://wandou.im/1kskss"},"campaign":null}},{"type":"video","data":{"id":5734,"date":1456502400000,"idx":1,"title":"一首歌看完第 88 届奥斯卡提名","description":"UP 主胡雨果自制,按照提名颁奖的顺序来排的先后,BGM 是提名歌曲,「The Weeknd」的「Earned it」。祝辛勤的电影工作者们好运~From @InkHugo","category":"综合","duration":407,"playUrl":"http://baobab.wdjcdn.com/14564977406580.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456498049022_5734_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/14564977406580.mp4"}],"consumption":{"collectionCount":1588,"shareCount":3241,"playCount":0,"replyCount":40},"promotion":null,"waterMarks":null,"provider":{"name":"哔哩哔哩动画","alias":"bilibili","icon":"http://img.wdjimg.com/mms/icon/v1/4/cd/b968890a2b3e9ab5ae234175681f8cd4_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/ca20321e8407ee9d3d6e249fc8eb7b6e_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/ca20321e8407ee9d3d6e249fc8eb7b6e_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/49c3d0fd2c562cdfe3c0a57540e1234d_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/ca20321e8407ee9d3d6e249fc8eb7b6e_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5734","forWeibo":"http://wandou.im/1kchm3"},"campaign":null}},{"type":"video","data":{"id":5570,"date":1456329600000,"idx":2,"title":"奥斯卡最佳动画短片提名:今夕何夕","description":"这部获得今年奥斯卡最佳动画短片提名的「World of Tomorrow」(今夕何夕)讲述了一个小女孩的一场离奇时空记忆之旅。其中小女孩的配音是导演侄女在玩耍的过程中即兴录制的。From 大家字幕组","category":"动画","duration":989,"playUrl":"http://baobab.wdjcdn.com/1456117847747a_x264.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456118071092_5570_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456117847747a_x264.mp4"}],"consumption":{"collectionCount":2581,"shareCount":3044,"playCount":0,"replyCount":71},"promotion":null,"waterMarks":null,"provider":{"name":"哔哩哔哩动画","alias":"bilibili","icon":"http://img.wdjimg.com/mms/icon/v1/4/cd/b968890a2b3e9ab5ae234175681f8cd4_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/93414798d8ab772595eb53a95f001397_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/93414798d8ab772595eb53a95f001397_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/5f2ce841605a943008b8c1281fb6218b_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/93414798d8ab772595eb53a95f001397_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5570","forWeibo":"http://wandou.im/1iyipp"},"campaign":null}},{"type":"video","data":{"id":5564,"date":1456416000000,"idx":2,"title":"超萌创意全息投影:最迷你的厨师","description":"世界上最迷你的厨师又来了~这一次他去到了寒冷的大雪天里,为餐前无聊等餐的客人制作精美甜点。虽然人小,但是做出来的美食分量可不能小!快来看看他独特又有趣的制作过程吧!From Skullmapping","category":"创意","duration":190,"playUrl":"http://baobab.wdjcdn.com/1455968234865481297704.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1455968670373_5564_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1455968234865481297704.mp4"}],"consumption":{"collectionCount":1589,"shareCount":3753,"playCount":0,"replyCount":45},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/8ad1f07d2a2a893a55360968e4ac26c3_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/8ad1f07d2a2a893a55360968e4ac26c3_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/42acbea88107183ae11cfa7da474a811_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/8ad1f07d2a2a893a55360968e4ac26c3_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5564","forWeibo":"http://wandou.im/1ig7kq"},"campaign":null}},{"type":"video","data":{"id":4418,"date":1456675200000,"idx":2,"title":"经典温情广告:记忆月台","description":"这支经典的品牌广告是金士顿 2013 年的年度广告片,讲述了一段跨越了时间、关于守候、关于记忆的浪漫爱情故事。广告不仅改编自伦敦的真实事件,更是耗费重金打造了伦敦地铁的场景。From Kingston Technology","category":"广告","duration":452,"playUrl":"http://baobab.wdjcdn.com/1456317490140jiyiyuetai_x264.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456317825030_4418_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456317490140jiyiyuetai_x264.mp4"}],"consumption":{"collectionCount":1793,"shareCount":3941,"playCount":0,"replyCount":80},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/7ba4f1351d788f6afe9ff3726f39e949_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/7ba4f1351d788f6afe9ff3726f39e949_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/4240d724e6f114fa85f470cd4c76ad1a_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/7ba4f1351d788f6afe9ff3726f39e949_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=4418","forWeibo":"http://wandou.im/147in2"},"campaign":null}},{"type":"video","data":{"id":5410,"date":1456588800000,"idx":1,"title":"电影时光:致电影的一封情书","description":"对于普通大众来说,一部电影可以在感官和精神上带来的欢愉、紧张、投入,比这部电影拿过什么名头响亮的大奖其实要重要的多。回复\u201c电影情书\u201d到公众号「开眼Eyepetizer」,get 作者的电影豆列~ From @握不住的灵魂","category":"综合","duration":427,"playUrl":"http://baobab.wdjcdn.com/1456665467509qingshu.mp4","playInfo":[],"consumption":{"collectionCount":1960,"shareCount":3031,"playCount":0,"replyCount":108},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/f9a4bc762929717192b7140386744bec_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/f9a4bc762929717192b7140386744bec_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/4d254b9c816905b16ba3e543091e6709_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/f9a4bc762929717192b7140386744bec_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5410","forWeibo":"http://wandou.im/1hrbss"},"campaign":null}},{"type":"video","data":{"id":5670,"date":1456502400000,"idx":2,"title":"是什么让丧尸重新焕发生命的光彩","description":"这支广告将可能在以下危急情况,拯救你的生命。当你被丧尸追逐,或是不小心被变成了丧尸可是又想回归人类,都可以使用广告中的这款神奇产品。简单,好用~丧尸也能再获新生~From brooksrunning","category":"广告","duration":195,"playUrl":"http://baobab.wdjcdn.com/1456316686552The.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456316844252_5670_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456316686552The.mp4"}],"consumption":{"collectionCount":1126,"shareCount":3060,"playCount":0,"replyCount":86},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/5fe2acc12ff9a9d90377e90cfb87e43f_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/5fe2acc12ff9a9d90377e90cfb87e43f_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/2ae31d9b1e432cc5e89d177280b3de9b_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/5fe2acc12ff9a9d90377e90cfb87e43f_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5670","forWeibo":"http://wandou.im/1jpc5g"},"campaign":null}},{"type":"video","data":{"id":5420,"date":1456416000000,"idx":3,"title":"经典粤式口味:酱油鸡","description":"知咚杨妈妈的拿手好菜酱油鸡,口感丰富爽嫩,是经典的粤式口味。这道喜庆的家常菜,看起来难度很大,没想到制作起来却是非常简单好上手。只要细心,你也可以掌握这美味的秘诀。From @知咚","category":"开胃","duration":133,"playUrl":"http://baobab.wdjcdn.com/1455782903700jy.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1455783304983_5420_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1455782903700jy.mp4"}],"consumption":{"collectionCount":1605,"shareCount":1832,"playCount":0,"replyCount":36},"promotion":null,"waterMarks":null,"provider":{"name":"腾讯","alias":"qq","icon":"http://img.wdjimg.com/mms/icon/v1/4/2c/def8a8aa0971f93973280f7f75c772c4_256_256.png"},"author":{"id":6,"name":"知咚","link":"http://weibo.com/4cactuses"},"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/b43c015da8bd98e017db9c3f29b7d742_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/b43c015da8bd98e017db9c3f29b7d742_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/4de3b2a36059c8513c15e8d94dc20550_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/b43c015da8bd98e017db9c3f29b7d742_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5420","forWeibo":"http://wandou.im/1hs93l"},"campaign":null}},{"type":"video","data":{"id":4840,"date":1456761600000,"idx":2,"title":"Hope Pro 4:山地骑行魅影","description":"英国制造的 Hope Pro2 花鼓因为其卓越的性能、灵活丰富的转换规格而深受自行车迷喜爱。Hope Pro 4 年初发布,并且测试是由山地车大神 Adams Brayton 带来的精彩山地速降。From hopetech","category":"运动","duration":207,"playUrl":"http://baobab.wdjcdn.com/1452692815358460564181.mp4","playInfo":[],"consumption":{"collectionCount":683,"shareCount":2063,"playCount":0,"replyCount":50},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/930cd110020b97e3ede9335678dab171_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/930cd110020b97e3ede9335678dab171_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/b9b8af727c99ac106dbeaa95cea3e8ba_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/930cd110020b97e3ede9335678dab171_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=4840","forWeibo":"http://wandou.im/17vp77"},"campaign":null}},{"type":"video","data":{"id":4468,"date":1455465600000,"idx":1,"title":"ROLLIN' WILD 圆滚滚的\u2026\u2026","description":"每逢佳节胖三斤,过完年的你是不是也\u2026\u2026 网络上流传过不少节前节后身形对比图,然而直到看到这一组萌翻了的动画小短片,才深刻感受到,啊,这就是过完年的我啊。#一条不太友好的视频描述 From ROLLIN' WILD","category":"动画","duration":213,"playUrl":"http://baobab.wdjcdn.com/1451897812703c.mp4","playInfo":[{"height":480,"width":848,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1451898114830_4468_848x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1451897812703c.mp4"}],"consumption":{"collectionCount":5246,"shareCount":17206,"playCount":0,"replyCount":162},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/c4e5c0f76d21abbd23c9626af3c9f481_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/c4e5c0f76d21abbd23c9626af3c9f481_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/781e8dee284dab7ac97923091abc2730_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/c4e5c0f76d21abbd23c9626af3c9f481_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=4468","forWeibo":"http://wandou.im/14locg"},"campaign":null}},{"type":"video","data":{"id":5150,"date":1456632000000,"idx":2,"title":"周末号外丨风影魔都","description":"一年的拍摄、一个月的后期、一天的剪辑。作者用这部摄影短片「风影魔都」,纪录了他所生活的这座城市\u2014\u2014上海的光影变化。From @JESSE-ZMY","category":"旅行","duration":197,"playUrl":"http://baobab.wdjcdn.com/14538916434374.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1453891909312_5150_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/14538916434374.mp4"}],"consumption":{"collectionCount":911,"shareCount":1791,"playCount":0,"replyCount":54},"promotion":null,"waterMarks":null,"provider":{"name":"土豆","alias":"tudou","icon":"http://img.wdjimg.com/mms/icon/v1/0/d3/afafc777c31aa95bddbb2d7d8bd90d30_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/56e69eef2117658c7ecead23fe467512_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/56e69eef2117658c7ecead23fe467512_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/4cb9b5efee38e032efad00671ddd3eff_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/56e69eef2117658c7ecead23fe467512_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5150","forWeibo":"http://wandou.im/1bogvg"},"campaign":null}},{"type":"video","data":{"id":4768,"date":1456416000000,"idx":4,"title":"Stop. Look. Go. 享受当下,拥抱自然","description":"每天被各种各样的事物围绕,工作、生活就像一张巨大的网将现代都市人罩住。什么时候,我们才能再次放下繁琐,好好地去拥抱自然,感受那些上天馈赠的美景,重拾内心的平静与幸福。from gnarly bay","category":"综合","duration":164,"playUrl":"http://baobab.wdjcdn.com/14564591224401452488_x264.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456459176645_4768_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/14564591224401452488_x264.mp4"}],"consumption":{"collectionCount":1127,"shareCount":1517,"playCount":0,"replyCount":37},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/20fa2f6c9ca9036c1575b06619b59826_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/20fa2f6c9ca9036c1575b06619b59826_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/91a845a29e69a3758907c0b1e94cad2b_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/20fa2f6c9ca9036c1575b06619b59826_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=4768","forWeibo":"http://wandou.im/17afv3"},"campaign":null}},{"type":"video","data":{"id":5348,"date":1456588800000,"idx":2,"title":"The One 原来这就是你说的真爱\u2026\u2026","description":"难以忘记第一次见到她时,那种惊为天人的感觉。从此之后,她的举手投足、一颦一笑都在心中,再也无法抹去,男主角对着镜头深情款款地回忆着心中的真爱。只是有时候话虽然说得很动听,但\u2026\u2026From W.A. Studio","category":"剧情","duration":232,"playUrl":"http://baobab.wdjcdn.com/1455614108256t(2).mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1455614463683_5348_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1455614108256t(2).mp4"}],"consumption":{"collectionCount":826,"shareCount":1232,"playCount":0,"replyCount":85},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/c1c7dbec5f0b6ca408cb176b04bf5096_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/c1c7dbec5f0b6ca408cb176b04bf5096_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/c2d21d1b40f0e1fbef5cf747b240ca73_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/c1c7dbec5f0b6ca408cb176b04bf5096_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5348","forWeibo":"http://wandou.im/1h6lbl"},"campaign":null}},{"type":"video","data":{"id":5370,"date":1456545600000,"idx":5,"title":"周末号外丨虐心奥斯卡提名动画","description":"俄罗斯导演 Konstantin Bronzit 的作品「We Can't Live without Cosmos」(没有宇宙我们无法生存)获得了奥斯卡最佳动画短片提名,讲述了一对好基友相约太空的虐心故事。From MIFF","category":"动画","duration":919,"playUrl":"http://baobab.wdjcdn.com/1455695531248a.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1455696465581_5370_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1455695531248a.mp4"}],"consumption":{"collectionCount":1374,"shareCount":1318,"playCount":0,"replyCount":32},"promotion":null,"waterMarks":null,"provider":{"name":"腾讯","alias":"qq","icon":"http://img.wdjimg.com/mms/icon/v1/4/2c/def8a8aa0971f93973280f7f75c772c4_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/109e172aa2058919317236527d58c1d6_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/109e172aa2058919317236527d58c1d6_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/29412602c2dfac93c7845f0ee9d0709f_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/109e172aa2058919317236527d58c1d6_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5370","forWeibo":"http://wandou.im/1hh61t"},"campaign":null}},{"type":"video","data":{"id":4490,"date":1456027200000,"idx":2,"title":"周末号外丨日本的洗手间到底多厉害","description":"关于日本家居设计,水平是毋庸置疑的。连一个小小的厕所也能创造出不一样的乾坤,一个厕所到底能有多厉害呢?这位日本萌娃就给大家展示了一下,她家的厕所到底是怎样的~ From Life Where I'm From","category":"综合","duration":242,"playUrl":"http://baobab.wdjcdn.com/1455956939710japanwc_x264.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1455958910410_4490_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1455956939710japanwc_x264.mp4"}],"consumption":{"collectionCount":3215,"shareCount":5904,"playCount":258,"replyCount":127},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/11fd436110d9a2c06965510ca93caf87_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/11fd436110d9a2c06965510ca93caf87_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/c1a4a165ae8a1561842cb7269f1d3f57_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/11fd436110d9a2c06965510ca93caf87_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=4490","forWeibo":"http://wandou.im/15fecs"},"campaign":null}},{"type":"video","data":{"id":5740,"date":1456632000000,"idx":1,"title":"周末号外丨流动的「梵高传」","description":"「Loving Vincent」是来自奥斯卡获奖动画团队的一部油画动画电影,电影以梵高的画风、每秒 12 张油画的超大工作量,讲述了我们挚爱的梵高先生的一生。From BreakThruPoland","category":"预告","duration":60,"playUrl":"http://baobab.wdjcdn.com/1456576526831clip2.mp4","playInfo":[{"height":468,"width":640,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456576526831clip2.mp4"}],"consumption":{"collectionCount":1212,"shareCount":1799,"playCount":0,"replyCount":30},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/bd549e2fbad379afd1c330ef9be3bca5_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/bd549e2fbad379afd1c330ef9be3bca5_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/b053b2334c1dff6a7986ce0a781c819f_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/bd549e2fbad379afd1c330ef9be3bca5_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5740","forWeibo":"http://wandou.im/1klrgk"},"campaign":null}},{"type":"video","data":{"id":5292,"date":1456675200000,"idx":5,"title":"一碗用耐心烹饪的家常意面","description":"肉酱、西芹、胡萝卜、番茄,用三十分钟耐心地焖煮,便可熬制成美味的意面酱料,再用 15 分钟将意面煮熟到口感筋道。虽然花费的时间不少,但成品却也因为这耐心而更添美味。From 许四爷(微信 ilovetd_254784245)","category":"开胃","duration":178,"playUrl":"http://baobab.wdjcdn.com/1454571030247w.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1454571798153_5292_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1454571030247w.mp4"}],"consumption":{"collectionCount":1541,"shareCount":1461,"playCount":0,"replyCount":43},"promotion":null,"waterMarks":null,"provider":{"name":"优酷","alias":"youku","icon":"http://img.wdjimg.com/mms/icon/v1/3/2d/dc14dd1e40b8e561eae91584432262d3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/19f9bc2630d643ce6be56a01895e7a40_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/19f9bc2630d643ce6be56a01895e7a40_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/f2fcb626c2f9944882c290da10cd003d_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/19f9bc2630d643ce6be56a01895e7a40_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5292","forWeibo":"http://wandou.im/1dsxaq"},"campaign":null}},{"type":"video","data":{"id":5724,"date":1456502400000,"idx":3,"title":"抖森新片「摩天楼」中文预告","description":"抖森新片电影「High-Rise」(摩天楼)改编自 J·G·巴拉德撰写的 1975 年的同名小说。一栋与世隔绝的摩天大楼,其中的用户自成阶级。表面看似和谐,背地里却逐渐崩坏。From 觸電網","category":"预告","duration":141,"playUrl":"http://baobab.wdjcdn.com/1456480115661mtl.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456480353551_5724_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456480115661mtl.mp4"}],"consumption":{"collectionCount":914,"shareCount":1404,"playCount":0,"replyCount":38},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/b024d2a14d4f140e055a4ad77cc065c7_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/b024d2a14d4f140e055a4ad77cc065c7_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/af033172f176600fb67e0fbab77192a3_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/b024d2a14d4f140e055a4ad77cc065c7_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5724","forWeibo":"http://wandou.im/1k9jhc"},"campaign":null}},{"type":"video","data":{"id":4954,"date":1456027200000,"idx":1,"title":"周末号外丨这是中国 THIS IS CHINA","description":"毕业前,一个人,用时一年,背包行走中国。33个省、70座城市、283个景点,全程55285公里,12万张照片,只为这部片子可以带你纵览华夏之美, 这是作者镜头中的中国。From @小个子爱旅行","category":"旅行","duration":226,"playUrl":"http://baobab.wdjcdn.com/14532883445784.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1453288813645_4954_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/14532883445784.mp4"}],"consumption":{"collectionCount":2381,"shareCount":5158,"playCount":0,"replyCount":126},"promotion":null,"waterMarks":null,"provider":{"name":"优酷","alias":"youku","icon":"http://img.wdjimg.com/mms/icon/v1/3/2d/dc14dd1e40b8e561eae91584432262d3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/8227f49fcfb0458b46aa250d2bc39ebf_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/8227f49fcfb0458b46aa250d2bc39ebf_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/42340bfbe97a8323a7ba26233dd4b333_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/8227f49fcfb0458b46aa250d2bc39ebf_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=4954","forWeibo":"http://wandou.im/19s2g7"},"campaign":null}},{"type":"video","data":{"id":5366,"date":1456502400000,"idx":4,"title":"空中特技飞行队渔夫塔超燃炫技","description":"Red Bull Air Force(红牛空中特技飞行队)集合了世界上最有经验的各类飞行专家,这一次他们聚集在世界上最危险的山区美国犹他州的 Fisher Towers(渔夫塔),展示最精湛的高空技能。From The Roster","category":"运动","duration":373,"playUrl":"http://baobab.wdjcdn.com/1455692839763469122665.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1455693177361_5366_854x480.mp4"},{"height":400,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1455692839763469122665.mp4"}],"consumption":{"collectionCount":745,"shareCount":1244,"playCount":0,"replyCount":34},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/01efc58de27b05310551bf049b906df6_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/01efc58de27b05310551bf049b906df6_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/bad768bdc5b164873d1dc0c35ee86ab0_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/01efc58de27b05310551bf049b906df6_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5366","forWeibo":"http://wandou.im/1hgomj"},"campaign":null}},{"type":"video","data":{"id":4996,"date":1456761600000,"idx":3,"title":"莱利的初次约会","description":"众望所归「头脑特工队」获得了第 88 届奥斯卡最佳动画长片,莱利逐渐适应了新环境后,生活也重新变得多姿多彩了~这支番外篇「莱利的初次约会」里,莱利的新朋友也到家做客了~ From Disney","category":"动画","duration":280,"playUrl":"http://baobab.wdjcdn.com/14533808675980.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1453381731324_4996_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/14533808675980.mp4"}],"consumption":{"collectionCount":717,"shareCount":1289,"playCount":0,"replyCount":42},"promotion":null,"waterMarks":null,"provider":{"name":"哔哩哔哩动画","alias":"bilibili","icon":"http://img.wdjimg.com/mms/icon/v1/4/cd/b968890a2b3e9ab5ae234175681f8cd4_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/81c03ce58a0fd567d9c8f3f8356c89c7_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/81c03ce58a0fd567d9c8f3f8356c89c7_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/fe7c05e1eb825c22f0c3f86d00a59c03_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/81c03ce58a0fd567d9c8f3f8356c89c7_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=4996","forWeibo":"http://wandou.im/1a2lw7"},"campaign":null}},{"type":"video","data":{"id":5736,"date":1456545600000,"idx":1,"title":"周末号外丨口袋妖怪出中文版了!","description":"各位小学机友们,在我们快不玩主机的时候,20 周年的「口袋妖怪」却出新了,还有中文简体版!有机友形容此刻的心情是:感觉跟中国申奥成功似的......From The Official Pokémon Channel","category":"广告","duration":130,"playUrl":"http://baobab.wdjcdn.com/1456504775813P.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456505071686_5736_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456504775813P.mp4"}],"consumption":{"collectionCount":556,"shareCount":1207,"playCount":0,"replyCount":60},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/c51d166555192c9ba9b0c44117995445_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/c51d166555192c9ba9b0c44117995445_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/b662485e696f96a6b3c16ebf5b214c4e_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/c51d166555192c9ba9b0c44117995445_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5736","forWeibo":"http://wandou.im/1kdskd"},"campaign":null}},{"type":"video","data":{"id":4794,"date":1456329600000,"idx":3,"title":"重口慎点:收尸二人组","description":"虽然题材有点惊悚,但 MV 其实并不是惊悚路线的啦!作为收尸二人组的两位大叔,每天面对这座城市里莫名死亡的人。大概他们只想说,现在的人啊,就不能小心一点珍爱生命嘛!From Ленинград | Leningrad","category":"音乐","duration":193,"playUrl":"http://baobab.wdjcdn.com/14525705791193.mp4","playInfo":[{"height":480,"width":848,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1452570939148_4794_848x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/14525705791193.mp4"}],"consumption":{"collectionCount":898,"shareCount":1475,"playCount":0,"replyCount":45},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/e02305b1e1f58b317ce9011d2480ee0a_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/e02305b1e1f58b317ce9011d2480ee0a_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/6db0efb2714d93159251011e129a75e2_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/e02305b1e1f58b317ce9011d2480ee0a_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=4794","forWeibo":"http://wandou.im/17iet0"},"campaign":null}},{"type":"video","data":{"id":5580,"date":1456588800000,"idx":3,"title":"童年的回忆:油墩子","description":"油墩子,老底子的滋味,现在却成了稀罕物。在许多人的记忆里,放学路上、早饭摊头,街头巷尾总少不了那躺在滋滋的油锅声里的油墩子。短片将教大家如何在家自制这记忆的味道,油墩子。From @日食记","category":"开胃","duration":166,"playUrl":"http://baobab.wdjcdn.com/1456131361532y.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456131575652_5580_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456131361532y.mp4"}],"consumption":{"collectionCount":735,"shareCount":1123,"playCount":0,"replyCount":55},"promotion":null,"waterMarks":null,"provider":{"name":"腾讯","alias":"qq","icon":"http://img.wdjimg.com/mms/icon/v1/4/2c/def8a8aa0971f93973280f7f75c772c4_256_256.png"},"author":{"id":22,"name":"日食记","link":"http://weibo.com/rishiji?from=myfollow_all"},"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/a524ee567ab991bdbce2f5a4f74ca816_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/a524ee567ab991bdbce2f5a4f74ca816_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/de45ea1568ac8dd5cb76db74b67c957e_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/a524ee567ab991bdbce2f5a4f74ca816_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5580","forWeibo":"http://wandou.im/1j0vf4"},"campaign":null}},{"type":"video","data":{"id":3986,"date":1456848000000,"idx":2,"title":"日本人文之旅 A Dream In Japan","description":"从 2012 年到 2015 年间,作者去了日本 6 次,这支充满人文气息的旅行短片由这 6 次旅行的素材剪辑而成。东京、京都、大阪、北海道,每一个地方都拥有自己独特的美景和人文特质。From Fincher Wei","category":"旅行","duration":246,"playUrl":"http://baobab.wdjcdn.com/1451892098914459941116.mp4","playInfo":[{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1451892098914459941116.mp4"}],"consumption":{"collectionCount":1033,"shareCount":1485,"playCount":0,"replyCount":41},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/f9936f6c170c9843731f7b15a8e34c51_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/f9936f6c170c9843731f7b15a8e34c51_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/bfbd703b44bcef8c667c32123ac67f0b_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/f9936f6c170c9843731f7b15a8e34c51_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=3986","forWeibo":"http://wandou.im/114ntb"},"campaign":null}},{"type":"video","data":{"id":5738,"date":1456761600000,"idx":4,"title":"谷歌眼镜背后女性的一天","description":"3 月 1 日「中华人民共和国反家庭暴力法」将正式施行。这支以女性佩戴谷歌眼镜为视角的短片,揭露了一个残酷的事实,时至今日女性仍然遭受着暴力的伤害。From @柚子木字幕组","category":"广告","duration":146,"playUrl":"http://baobab.wdjcdn.com/14565674319820264.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456567504060_5738_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/14565674319820264.mp4"}],"consumption":{"collectionCount":505,"shareCount":1194,"playCount":0,"replyCount":133},"promotion":null,"waterMarks":null,"provider":{"name":"哔哩哔哩动画","alias":"bilibili","icon":"http://img.wdjimg.com/mms/icon/v1/4/cd/b968890a2b3e9ab5ae234175681f8cd4_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/d12e0dc34fda288acb58de7a3c2719af_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/d12e0dc34fda288acb58de7a3c2719af_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/213971e9112da04a65bdfcece1ca0b5b_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/d12e0dc34fda288acb58de7a3c2719af_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5738","forWeibo":"http://wandou.im/1kkg72"},"campaign":null}},{"type":"video","data":{"id":5010,"date":1456588800000,"idx":5,"title":"日本剑玉花样玩法","description":"Kendama 日本剑玉,又称剑球、托球,是一种来自日本的传统民间游戏,起源于约17~19世纪于法国,后来逐渐发展为了有体系的竞技项目。看看短片中的年轻人把剑玉玩出了怎样高观赏性的花样吧~From Kuma Films","category":"运动","duration":300,"playUrl":"http://baobab.wdjcdn.com/1453446864755Wo.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1453447206083_5010_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1453446864755Wo.mp4"}],"consumption":{"collectionCount":609,"shareCount":823,"playCount":0,"replyCount":48},"promotion":null,"waterMarks":null,"provider":{"name":"YouTube","alias":"youtube","icon":"http://img.wdjimg.com/image/video/fa20228bc5b921e837156923a58713f6_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/824e932944da65c8ef4afcb662027ec7_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/824e932944da65c8ef4afcb662027ec7_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/d2131a08532dcda7c541212d0426ef78_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/824e932944da65c8ef4afcb662027ec7_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5010","forWeibo":"http://wandou.im/1a9kmm"},"campaign":null}}]
- * count : 30
- * total : 0
- * nextPageUrl : null
- */
-
- private int count;
- private int total;
- private Object nextPageUrl;
- /**
- * type : video
- * data : {"id":5630,"date":1456416000000,"idx":1,"title":"我为什么要健身?","description":"我为什么要健身?难道真的只是为了减肥吗?短片「如何四步轻松减肥」中,男主角的故事并不只是一个肤浅的减肥励志故事。在健身房里流了一年的汗,不仅是为了外表,也是为了内心。From Benjamin Berman","category":"剧情","duration":423,"playUrl":"http://baobab.wdjcdn.com/1456459181808howtoloseweight_x264.mp4","playInfo":[{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456459550061_5630_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456459181808howtoloseweight_x264.mp4"}],"consumption":{"collectionCount":4983,"shareCount":8792,"playCount":0,"replyCount":119},"promotion":null,"waterMarks":null,"provider":{"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"},"author":null,"adTrack":null,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"cover":{"feed":"http://img.wdjimg.com/image/video/60a772984b6086faa90fa4f6a8a2412e_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/60a772984b6086faa90fa4f6a8a2412e_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/07cbb50d55041eb5e97f5091cac59d64_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/60a772984b6086faa90fa4f6a8a2412e_0_0.jpeg"},"webUrl":{"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5630","forWeibo":"http://wandou.im/1jbvwz"},"campaign":null}
- */
-
- private List itemList;
-
- public void setCount(int count) {
- this.count = count;
- }
-
- public void setTotal(int total) {
- this.total = total;
- }
-
- public void setNextPageUrl(Object nextPageUrl) {
- this.nextPageUrl = nextPageUrl;
- }
-
- public void setItemList(List itemList) {
- this.itemList = itemList;
- }
-
- public int getCount() {
- return count;
- }
-
- public int getTotal() {
- return total;
- }
-
- public Object getNextPageUrl() {
- return nextPageUrl;
- }
-
- public List getItemList() {
- return itemList;
- }
-
- public static class ItemListEntity {
- private String type;
- /**
- * id : 5630
- * date : 1456416000000
- * idx : 1
- * title : 我为什么要健身?
- * description : 我为什么要健身?难道真的只是为了减肥吗?短片「如何四步轻松减肥」中,男主角的故事并不只是一个肤浅的减肥励志故事。在健身房里流了一年的汗,不仅是为了外表,也是为了内心。From Benjamin Berman
- * category : 剧情
- * duration : 423
- * playUrl : http://baobab.wdjcdn.com/1456459181808howtoloseweight_x264.mp4
- * playInfo : [{"height":480,"width":854,"name":"标清","type":"normal","url":"http://baobab.wdjcdn.com/1456459550061_5630_854x480.mp4"},{"height":720,"width":1280,"name":"高清","type":"high","url":"http://baobab.wdjcdn.com/1456459181808howtoloseweight_x264.mp4"}]
- * consumption : {"collectionCount":4983,"shareCount":8792,"playCount":0,"replyCount":119}
- * promotion : null
- * waterMarks : null
- * provider : {"name":"Vimeo","alias":"vimeo","icon":"http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png"}
- * author : null
- * adTrack : null
- * shareAdTrack : null
- * favoriteAdTrack : null
- * webAdTrack : null
- * cover : {"feed":"http://img.wdjimg.com/image/video/60a772984b6086faa90fa4f6a8a2412e_0_0.jpeg","detail":"http://img.wdjimg.com/image/video/60a772984b6086faa90fa4f6a8a2412e_0_0.jpeg","blurred":"http://img.wdjimg.com/image/video/07cbb50d55041eb5e97f5091cac59d64_0_0.jpeg","sharing":"http://img.wdjimg.com/image/video/60a772984b6086faa90fa4f6a8a2412e_0_0.jpeg"}
- * webUrl : {"raw":"http://www.wandoujia.com/eyepetizer/detail.html?vid=5630","forWeibo":"http://wandou.im/1jbvwz"}
- * campaign : null
- */
-
- private DataEntity data;
-
- public void setType(String type) {
- this.type = type;
- }
-
- public void setData(DataEntity data) {
- this.data = data;
- }
-
- public String getType() {
- return type;
- }
-
- public DataEntity getData() {
- return data;
- }
-
- public static class DataEntity {
- private int id;
- private long date;
- private int idx;
- private String title;
- private String description;
- private String category;
- private int duration;
- private String playUrl;
- /**
- * collectionCount : 4983
- * shareCount : 8792
- * playCount : 0
- * replyCount : 119
- */
-
- private ConsumptionEntity consumption;
- private Object promotion;
- private Object waterMarks;
- /**
- * name : Vimeo
- * alias : vimeo
- * icon : http://img.wdjimg.com/image/video/c3ad630be461cbb081649c9e21d6cbe3_256_256.png
- */
-
- private ProviderEntity provider;
- private Object author;
- private Object adTrack;
- private Object shareAdTrack;
- private Object favoriteAdTrack;
- private Object webAdTrack;
- /**
- * feed : http://img.wdjimg.com/image/video/60a772984b6086faa90fa4f6a8a2412e_0_0.jpeg
- * detail : http://img.wdjimg.com/image/video/60a772984b6086faa90fa4f6a8a2412e_0_0.jpeg
- * blurred : http://img.wdjimg.com/image/video/07cbb50d55041eb5e97f5091cac59d64_0_0.jpeg
- * sharing : http://img.wdjimg.com/image/video/60a772984b6086faa90fa4f6a8a2412e_0_0.jpeg
- */
-
- private CoverEntity cover;
- /**
- * raw : http://www.wandoujia.com/eyepetizer/detail.html?vid=5630
- * forWeibo : http://wandou.im/1jbvwz
- */
-
- private WebUrlEntity webUrl;
- private Object campaign;
- /**
- * height : 480
- * width : 854
- * name : 标清
- * type : normal
- * url : http://baobab.wdjcdn.com/1456459550061_5630_854x480.mp4
- */
-
- private List playInfo;
-
- public void setId(int id) {
- this.id = id;
- }
-
- public void setDate(long date) {
- this.date = date;
- }
-
- public void setIdx(int idx) {
- this.idx = idx;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public void setCategory(String category) {
- this.category = category;
- }
-
- public void setDuration(int duration) {
- this.duration = duration;
- }
-
- public void setPlayUrl(String playUrl) {
- this.playUrl = playUrl;
- }
-
- public void setConsumption(ConsumptionEntity consumption) {
- this.consumption = consumption;
- }
-
- public void setPromotion(Object promotion) {
- this.promotion = promotion;
- }
-
- public void setWaterMarks(Object waterMarks) {
- this.waterMarks = waterMarks;
- }
-
- public void setProvider(ProviderEntity provider) {
- this.provider = provider;
- }
-
- public void setAuthor(Object author) {
- this.author = author;
- }
-
- public void setAdTrack(Object adTrack) {
- this.adTrack = adTrack;
- }
-
- public void setShareAdTrack(Object shareAdTrack) {
- this.shareAdTrack = shareAdTrack;
- }
-
- public void setFavoriteAdTrack(Object favoriteAdTrack) {
- this.favoriteAdTrack = favoriteAdTrack;
- }
-
- public void setWebAdTrack(Object webAdTrack) {
- this.webAdTrack = webAdTrack;
- }
-
- public void setCover(CoverEntity cover) {
- this.cover = cover;
- }
-
- public void setWebUrl(WebUrlEntity webUrl) {
- this.webUrl = webUrl;
- }
-
- public void setCampaign(Object campaign) {
- this.campaign = campaign;
- }
-
- public void setPlayInfo(List playInfo) {
- this.playInfo = playInfo;
- }
-
- public int getId() {
- return id;
- }
-
- public long getDate() {
- return date;
- }
-
- public int getIdx() {
- return idx;
- }
-
- public String getTitle() {
- return title;
- }
-
- public String getDescription() {
- return description;
- }
-
- public String getCategory() {
- return category;
- }
-
- public int getDuration() {
- return duration;
- }
-
- public String getPlayUrl() {
- return playUrl;
- }
-
- public ConsumptionEntity getConsumption() {
- return consumption;
- }
-
- public Object getPromotion() {
- return promotion;
- }
-
- public Object getWaterMarks() {
- return waterMarks;
- }
-
- public ProviderEntity getProvider() {
- return provider;
- }
-
- public Object getAuthor() {
- return author;
- }
-
- public Object getAdTrack() {
- return adTrack;
- }
-
- public Object getShareAdTrack() {
- return shareAdTrack;
- }
-
- public Object getFavoriteAdTrack() {
- return favoriteAdTrack;
- }
-
- public Object getWebAdTrack() {
- return webAdTrack;
- }
-
- public CoverEntity getCover() {
- return cover;
- }
-
- public WebUrlEntity getWebUrl() {
- return webUrl;
- }
-
- public Object getCampaign() {
- return campaign;
- }
-
- public List getPlayInfo() {
- return playInfo;
- }
-
- public static class ConsumptionEntity {
- private int collectionCount;
- private int shareCount;
- private int playCount;
- private int replyCount;
-
- public void setCollectionCount(int collectionCount) {
- this.collectionCount = collectionCount;
- }
-
- public void setShareCount(int shareCount) {
- this.shareCount = shareCount;
- }
-
- public void setPlayCount(int playCount) {
- this.playCount = playCount;
- }
-
- public void setReplyCount(int replyCount) {
- this.replyCount = replyCount;
- }
-
- public int getCollectionCount() {
- return collectionCount;
- }
-
- public int getShareCount() {
- return shareCount;
- }
-
- public int getPlayCount() {
- return playCount;
- }
-
- public int getReplyCount() {
- return replyCount;
- }
- }
-
- public static class ProviderEntity {
- private String name;
- private String alias;
- private String icon;
-
- public void setName(String name) {
- this.name = name;
- }
-
- public void setAlias(String alias) {
- this.alias = alias;
- }
-
- public void setIcon(String icon) {
- this.icon = icon;
- }
-
- public String getName() {
- return name;
- }
-
- public String getAlias() {
- return alias;
- }
-
- public String getIcon() {
- return icon;
- }
- }
-
- public static class CoverEntity {
- private String feed;
- private String detail;
- private String blurred;
- private String sharing;
-
- public void setFeed(String feed) {
- this.feed = feed;
- }
-
- public void setDetail(String detail) {
- this.detail = detail;
- }
-
- public void setBlurred(String blurred) {
- this.blurred = blurred;
- }
-
- public void setSharing(String sharing) {
- this.sharing = sharing;
- }
-
- public String getFeed() {
- return feed;
- }
-
- public String getDetail() {
- return detail;
- }
-
- public String getBlurred() {
- return blurred;
- }
-
- public String getSharing() {
- return sharing;
- }
- }
-
- public static class WebUrlEntity {
- private String raw;
- private String forWeibo;
-
- public void setRaw(String raw) {
- this.raw = raw;
- }
-
- public void setForWeibo(String forWeibo) {
- this.forWeibo = forWeibo;
- }
-
- public String getRaw() {
- return raw;
- }
-
- public String getForWeibo() {
- return forWeibo;
- }
- }
-
- public static class PlayInfoEntity {
- private int height;
- private int width;
- private String name;
- private String type;
- private String url;
-
- public void setHeight(int height) {
- this.height = height;
- }
-
- public void setWidth(int width) {
- this.width = width;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public int getHeight() {
- return height;
- }
-
- public int getWidth() {
- return width;
- }
-
- public String getName() {
- return name;
- }
-
- public String getType() {
- return type;
- }
-
- public String getUrl() {
- return url;
- }
- }
- }
- }
-}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/User.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/User.java
new file mode 100644
index 0000000000000000000000000000000000000000..36275f00e03fcd6d837267785abb11d75bde0115
--- /dev/null
+++ b/app/src/main/java/me/jessyan/mvparms/demo/mvp/model/entity/User.java
@@ -0,0 +1,32 @@
+package me.jessyan.mvparms.demo.mvp.model.entity;
+
+
+public class User {
+ private final int id;
+ private final String login;
+ private final String avatar_url;
+
+ public User(int id, String login, String avatar_url) {
+ this.id = id;
+ this.login = login;
+ this.avatar_url = avatar_url;
+ }
+
+ public String getAvatarUrl() {
+ if (avatar_url.isEmpty()) return avatar_url;
+ return avatar_url.split("\\?")[0];
+ }
+
+
+ public int getId() {
+ return id;
+ }
+
+ public String getLogin() {
+ return login;
+ }
+
+ @Override public String toString() {
+ return "id -> " + id + " login -> " + login;
+ }
+}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/presenter/UserPresenter.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/presenter/UserPresenter.java
new file mode 100644
index 0000000000000000000000000000000000000000..d71fc57c416bac4f8c503e3f728f1ab39eaeeb53
--- /dev/null
+++ b/app/src/main/java/me/jessyan/mvparms/demo/mvp/presenter/UserPresenter.java
@@ -0,0 +1,79 @@
+package me.jessyan.mvparms.demo.mvp.presenter;
+
+import com.jess.arms.base.BaseActivity;
+import com.jess.arms.base.DefaultAdapter;
+import com.jess.arms.di.scope.ActivityScope;
+import com.jess.arms.mvp.BasePresenter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import me.jessyan.mvparms.demo.mvp.contract.UserContract;
+import me.jessyan.mvparms.demo.mvp.model.entity.User;
+import me.jessyan.mvparms.demo.mvp.ui.adapter.UserAdapter;
+import me.jessyan.rxerrorhandler.core.RxErrorHandler;
+import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Action0;
+import rx.schedulers.Schedulers;
+
+/**
+ * Created by jess on 9/4/16 10:59
+ * Contact with jess.yan.effort@gmail.com
+ */
+@ActivityScope
+public class UserPresenter extends BasePresenter {
+ private RxErrorHandler mErrorHandler;
+ private List mUsers = new ArrayList<>();
+ private DefaultAdapter mAdapter;
+ private int lastUserId = 1;
+
+
+ @Inject
+ public UserPresenter(UserContract.Model model, UserContract.View rootView, RxErrorHandler handler) {
+ super(model, rootView);
+ this.mErrorHandler = handler;
+ mAdapter = new UserAdapter(mUsers);
+ mRootView.setAdapter(mAdapter);//设置Adapter
+ }
+
+ public void requestUsers(final boolean pullToRefresh) {
+ if (pullToRefresh) lastUserId = 1;
+
+ mModel.getUsers(lastUserId, pullToRefresh)
+ .subscribeOn(Schedulers.io())
+ .doOnSubscribe(new Action0() {
+ @Override
+ public void call() {
+ if (pullToRefresh)
+ mRootView.showLoading();//显示上拉刷新的进度条
+ else
+ mRootView.startLoadMore();
+ }
+ }).subscribeOn(AndroidSchedulers.mainThread())
+ .observeOn(AndroidSchedulers.mainThread())
+ .doAfterTerminate(new Action0() {
+ @Override
+ public void call() {
+ if (pullToRefresh)
+ mRootView.hideLoading();//隐藏上拉刷新的进度条
+ else
+ mRootView.endLoadMore();
+ }
+ })
+ .compose(((BaseActivity)mRootView).>bindToLifecycle())//使用RXlifecycle,使subscription和activity一起销毁
+ .subscribe(new ErrorHandleSubscriber>(mErrorHandler) {
+ @Override
+ public void onNext(List users) {
+ lastUserId = users.get(users.size() - 1).getId();//记录最后一个id,用于下一次请求
+ if (pullToRefresh) mUsers.clear();//如果是上拉刷新则晴空列表
+ for (User user : users) {
+ mUsers.add(user);
+ }
+ mAdapter.notifyDataSetChanged();//通知更新数据
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/activity/MainActivity.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/activity/MainActivity.java
deleted file mode 100644
index 1eb25c1ffd020c03244e6760029dc9f2d42d9057..0000000000000000000000000000000000000000
--- a/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/activity/MainActivity.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package me.jessyan.mvparms.demo.mvp.ui.activity;
-
-import android.view.LayoutInflater;
-import android.view.View;
-
-import com.jess.arms.utils.UiUtils;
-
-import io.rx_cache.DynamicKey;
-import io.rx_cache.EvictDynamicKey;
-import io.rx_cache.Reply;
-import me.jessyan.mvparms.demo.R;
-import me.jessyan.mvparms.demo.di.component.AppComponent;
-import me.jessyan.mvparms.demo.mvp.model.entity.HomePicEntity;
-import me.jessyan.mvparms.demo.mvp.ui.common.WEActivity;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.functions.Action1;
-import rx.schedulers.Schedulers;
-import timber.log.Timber;
-
-
-public class MainActivity extends WEActivity {
-
- @Override
- protected void setupActivityComponent(AppComponent appComponent) {
- appComponent
- .cacheManager()
- .getCommonCache()
- .getDailyList(appComponent
- .serviceManager()
- .getCommonService()
- .getDailyList(),new DynamicKey("15"),new EvictDynamicKey(true))
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .compose(this.>bindToLifecycle())
- .subscribe(new Action1>() {
- @Override
- public void call(Reply homePicEntityReply) {
- UiUtils.makeText(homePicEntityReply.getData().getIssueList().get(0).getPublishTime()+"/"+homePicEntityReply.getSource().name());
- Timber.tag(TAG).w(homePicEntityReply.getData().getIssueList().get(0).getPublishTime()+"");
- }
- }, new Action1() {
- @Override
- public void call(Throwable throwable) {
- throwable.printStackTrace();
- }
- });
-
- }
-
- @Override
- protected View initView() {
- return LayoutInflater.from(this).inflate(R.layout.activity_main,null,false);
- }
-
- @Override
- protected void initData() {
-
- }
-}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/activity/UserActivity.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/activity/UserActivity.java
new file mode 100644
index 0000000000000000000000000000000000000000..e68855d46900f508a97957b8d55444a82fc65539
--- /dev/null
+++ b/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/activity/UserActivity.java
@@ -0,0 +1,179 @@
+package me.jessyan.mvparms.demo.mvp.ui.activity;
+
+import android.content.Intent;
+import android.support.annotation.Nullable;
+import android.support.v4.widget.SwipeRefreshLayout;
+import android.support.v7.widget.DefaultItemAnimator;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+
+import com.jess.arms.base.DefaultAdapter;
+import com.jess.arms.utils.UiUtils;
+import com.paginate.Paginate;
+
+import butterknife.Bind;
+import me.jessyan.mvparms.demo.R;
+import me.jessyan.mvparms.demo.di.component.AppComponent;
+import me.jessyan.mvparms.demo.di.component.DaggerUserComponent;
+import me.jessyan.mvparms.demo.di.module.UserModule;
+import me.jessyan.mvparms.demo.mvp.contract.UserContract;
+import me.jessyan.mvparms.demo.mvp.presenter.UserPresenter;
+import me.jessyan.mvparms.demo.mvp.ui.common.WEActivity;
+import rx.Observable;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Action1;
+import timber.log.Timber;
+
+
+public class UserActivity extends WEActivity implements UserContract.View, SwipeRefreshLayout.OnRefreshListener {
+
+ @Nullable
+ @Bind(R.id.recyclerView)
+ RecyclerView mRecyclerView;
+ @Nullable
+ @Bind(R.id.SwipeRefreshLayout)
+ SwipeRefreshLayout mSwipeRefreshLayout;
+
+ private Paginate mPaginate;
+ private boolean isLoadingMore;
+
+
+ @Override
+ protected void setupActivityComponent(AppComponent appComponent) {
+ DaggerUserComponent
+ .builder()
+ .appComponent(appComponent)
+ .userModule(new UserModule(this))
+ .build()
+ .inject(this);
+
+ }
+
+ @Override
+ protected View initView() {
+ return LayoutInflater.from(this).inflate(R.layout.activity_user, null, false);
+ }
+
+ @Override
+ protected void initData() {
+ mPresenter.requestUsers(true);//打开app时自动加载列表
+ }
+
+ @Override
+ public void onRefresh() {
+ mPresenter.requestUsers(true);
+ }
+
+ /**
+ * 初始化RecycleView
+ */
+ private void initRecycleView() {
+ mSwipeRefreshLayout.setOnRefreshListener(this);
+ configRecycleView(mRecyclerView, new GridLayoutManager(this, 2));
+ }
+
+
+ /**
+ * 配置recycleview
+ *
+ * @param recyclerView
+ * @param layoutManager
+ */
+ private void configRecycleView(RecyclerView recyclerView
+ , RecyclerView.LayoutManager layoutManager
+ ) {
+ recyclerView.setLayoutManager(layoutManager);
+ //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
+ recyclerView.setHasFixedSize(true);
+ recyclerView.setItemAnimator(new DefaultItemAnimator());
+ }
+
+
+ @Override
+ public void showLoading() {
+ Timber.tag(TAG).w("showLoading");
+ Observable.just(1)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Action1() {
+ @Override
+ public void call(Integer integer) {
+ mSwipeRefreshLayout.setRefreshing(true);
+ }
+ });
+ }
+
+ @Override
+ public void hideLoading() {
+ Timber.tag(TAG).w("hideLoading");
+ mSwipeRefreshLayout.setRefreshing(false);
+ }
+
+ @Override
+ public void showMessage(String message) {
+ UiUtils.SnackbarText(message);
+ }
+
+ @Override
+ public void launchActivity(Intent intent) {
+
+ }
+
+ @Override
+ public void killMyself() {
+
+ }
+
+ @Override
+ public void setAdapter(DefaultAdapter adapter) {
+ mRecyclerView.setAdapter(adapter);
+ initRecycleView();
+ initPaginate();
+ }
+
+ /**
+ * 开始加载更多
+ */
+ @Override
+ public void startLoadMore() {
+ isLoadingMore = true;
+ }
+
+ /**
+ * 介绍加载更多
+ */
+ @Override
+ public void endLoadMore() {
+ isLoadingMore = false;
+ }
+
+ /**
+ * 初始化Paginate,用于加载更多
+ */
+ private void initPaginate() {
+ if (mPaginate == null) {
+ Paginate.Callbacks callbacks = new Paginate.Callbacks() {
+ @Override
+ public void onLoadMore() {
+ mPresenter.requestUsers(false);
+ }
+
+ @Override
+ public boolean isLoading() {
+ return isLoadingMore;
+ }
+
+ @Override
+ public boolean hasLoadedAllItems() {
+ return false;
+ }
+ };
+
+ mPaginate = Paginate.with(mRecyclerView, callbacks)
+ .setLoadingTriggerThreshold(0)
+ .build();
+ mPaginate.setHasMoreDataToLoad(false);
+ }
+ }
+}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/adapter/UserAdapter.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/adapter/UserAdapter.java
new file mode 100644
index 0000000000000000000000000000000000000000..453f1d7cf37b33d08da5372358a528c2397251df
--- /dev/null
+++ b/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/adapter/UserAdapter.java
@@ -0,0 +1,32 @@
+package me.jessyan.mvparms.demo.mvp.ui.adapter;
+
+import android.view.View;
+
+import com.jess.arms.base.BaseHolder;
+import com.jess.arms.base.DefaultAdapter;
+
+import java.util.List;
+
+import me.jessyan.mvparms.demo.R;
+import me.jessyan.mvparms.demo.mvp.model.entity.User;
+import me.jessyan.mvparms.demo.mvp.ui.holder.UserItemHolder;
+
+/**
+ * Created by jess on 9/4/16 12:57
+ * Contact with jess.yan.effort@gmail.com
+ */
+public class UserAdapter extends DefaultAdapter {
+ public UserAdapter(List infos) {
+ super(infos);
+ }
+
+ @Override
+ public BaseHolder getHolder(View v) {
+ return new UserItemHolder(v);
+ }
+
+ @Override
+ public int getLayoutId() {
+ return R.layout.recycle_list;
+ }
+}
diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/holder/UserItemHolder.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/holder/UserItemHolder.java
new file mode 100644
index 0000000000000000000000000000000000000000..749fb9e95aace57ed53267b0a1f1dfd7ac31b1e5
--- /dev/null
+++ b/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/holder/UserItemHolder.java
@@ -0,0 +1,51 @@
+package me.jessyan.mvparms.demo.mvp.ui.holder;
+
+import android.support.annotation.Nullable;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.jakewharton.rxbinding.widget.RxTextView;
+import com.jess.arms.base.BaseHolder;
+import com.jess.arms.widget.imageloader.ImageLoader;
+import com.jess.arms.widget.imageloader.glide.GlideImageConfig;
+
+import butterknife.Bind;
+import me.jessyan.mvparms.demo.R;
+import me.jessyan.mvparms.demo.app.WEApplication;
+import me.jessyan.mvparms.demo.mvp.model.entity.User;
+import rx.Observable;
+
+/**
+ * Created by jess on 9/4/16 12:56
+ * Contact with jess.yan.effort@gmail.com
+ */
+public class UserItemHolder extends BaseHolder {
+
+ @Nullable
+ @Bind(R.id.iv_avatar)
+ ImageView mAvater;
+ @Nullable
+ @Bind(R.id.tv_name)
+ TextView mName;
+ private ImageLoader mImageLoader;//用于加载图片的管理类,默认使用glide,使用策略模式,可替换框架
+ private final WEApplication mApplication;
+
+ public UserItemHolder(View itemView) {
+ super(itemView);
+ mApplication = (WEApplication) itemView.getContext().getApplicationContext();
+ mImageLoader = mApplication.getAppComponent().imageLoader();
+ }
+
+ @Override
+ public void setData(User data) {
+ Observable.just(data.getLogin())
+ .subscribe(RxTextView.text(mName));
+
+ mImageLoader.loadImage(mApplication, GlideImageConfig
+ .builder()
+ .url(data.getAvatarUrl())
+ .imagerView(mAvater)
+ .build());
+ }
+}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
deleted file mode 100644
index 052d9cbf074d949cf253d7784c5579b076d8e08b..0000000000000000000000000000000000000000
--- a/app/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_user.xml b/app/src/main/res/layout/activity_user.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b6e0258ae9f19e43a67e606fbdf39aa3f507e239
--- /dev/null
+++ b/app/src/main/res/layout/activity_user.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/recycle_list.xml b/app/src/main/res/layout/recycle_list.xml
new file mode 100644
index 0000000000000000000000000000000000000000..27dbccccfb9263d3298e9786288b89c5e739183b
--- /dev/null
+++ b/app/src/main/res/layout/recycle_list.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 3ab3e9cbce07f7cdc941fc8ba424c05e83ed80f0..d3bb5fd1099871cf8cec27f1093564e142e8a1d2 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -3,4 +3,5 @@
#3F51B5
#303F9F
#FF4081
+ #FFFFFF
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 5885930df6d10edf3d6df40d6556297d11f953da..0eb88fe3350eaa944c0c6fe7e949e1cab494e8e8 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,7 +1,7 @@
-