Преглед на файлове

看点代码优化;
3.3任务详情中审核失败新需求

zengjiebin преди 7 години
родител
ревизия
1104842133

+ 9 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/TaskChild.java

@@ -38,6 +38,7 @@ public class TaskChild implements Serializable {
 7、任务已过期未完成——已过期
      */
     private int status;//
+    private int allowSubmit;//失败或者下线后,是否可以再次提交截图 2 不可以 1 可以
 
     private int demo_time;//试玩时长(秒)
 
@@ -200,6 +201,14 @@ public class TaskChild implements Serializable {
         this.already_accepted_task_id = already_accepted_task_id;
     }
 
+    public int getAllowSubmit() {
+        return allowSubmit;
+    }
+
+    public void setAllowSubmit(int allowSubmit) {
+        this.allowSubmit = allowSubmit;
+    }
+
     /**
      * 重组desc字段
      * @param desc

+ 9 - 1
app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java

@@ -730,7 +730,15 @@ public class CommonUtil {
                 state = " (已完成 )";
                 break;
             case 6:
-                state = " (审核失败,请重新上传截图)";
+                switch (taskChild.getAllowSubmit()) {
+                    default:
+                    case TaskAcceptedEty.ALLOW_SUBMIT_NO:
+                        state = " (审核失败)";
+                        break;
+                    case TaskAcceptedEty.ALLOW_SUBMIT_YES:
+                        state = " (审核失败,请重新上传截图)";
+                        break;
+                }
                 break;
             case 7:
                 state = " (已过期 )";

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/util/ConnectAddress.java

@@ -36,7 +36,8 @@ public enum ConnectAddress {
 
         @Override
         public String getAppUrl() {
-            return "http://10.8.210.229:8080/";
+//            return "http://10.8.210.229:8080/";
+            return "http://10.8.210.247:8080/";
         }
         @Override
         public String getName() {

+ 0 - 7
app/src/main/java/com/sheep/gamegroup/view/activity/ActGameAccount.java

@@ -155,13 +155,6 @@ public class ActGameAccount extends BaseActivity {
                 });
     }
 
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        // TODO: add setContentView(...) invocation
-        ButterKnife.bind(this);
-    }
-
     private void checkAndInitView() {
         if(refresh == null)
             refresh = findViewById(R.id.refresh);

+ 137 - 59
app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java

@@ -359,51 +359,86 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         btnUpImag.setEnabled(true);
         //判断任务是否下线
         if (taskReleaseEty.isOffline()) {//任务已经下线
-            btnUpImag.setText(CommonUtil.TASK_OFFLINE);//第二按钮不可点击且显示状态
-            btnUpImag.setEnabled(false);
-            switch (taskEty.getTask_type()) {// 1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1004 小米游戏任务
-                case TASK_TYPE_H5://h5业务
-                    btnTaskItem.setVisibility(View.GONE);
-                    break;
-                case TASK_TYPE_CREDIT_CARD:
-                case TASK_TYPE_CHANG_SI://信用卡与畅思任务不考虑
-                case TASK_TYPE_APPLET://小程序
-                    bottom_btn_layout.setVisibility(View.GONE);
-                    break;
-                case TASK_TYPE_SUCCESSION://连续任务
-                    switch (taskEty.getOpen_mode()){//连续任务的打开方式 1:打开应用 2:H5内部 3:H5外部
-                        case OPEN_MODE_TYPE_H5_OUT:
-                        case OPEN_MODE_TYPE_H5_IN:
-                            type = TASK_TYPE_COMMON_H5 + taskEty.getOpen_mode();
-                            btnTaskItem.setText(START_TASK);
-                            break;
-                        case OPEN_MODE_TYPE_APP:
-                        default:
-                            setFirstBtnState();
+            if(gettaskAcceptedEty == null) {//无任务记录
+                btnUpImag.setText(CommonUtil.TASK_OFFLINE);//第二按钮不可点击且显示状态
+                btnUpImag.setEnabled(false);
+                switch (taskEty.getTask_type()) {// 1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1004 小米游戏任务
+                    case TASK_TYPE_H5://h5业务
+                        btnTaskItem.setVisibility(View.GONE);
+                        break;
+                    case TASK_TYPE_CREDIT_CARD:
+                    case TASK_TYPE_CHANG_SI://信用卡与畅思任务不考虑
+                    case TASK_TYPE_APPLET://小程序
+                        bottom_btn_layout.setVisibility(View.GONE);
+                        break;
+                    case TASK_TYPE_SUCCESSION://连续任务
+                        switch (taskEty.getOpen_mode()) {//连续任务的打开方式 1:打开应用 2:H5内部 3:H5外部
+                            case OPEN_MODE_TYPE_H5_OUT:
+                            case OPEN_MODE_TYPE_H5_IN:
+                                type = TASK_TYPE_COMMON_H5 + taskEty.getOpen_mode();
+                                btnTaskItem.setText(START_TASK);
+                                break;
+                            case OPEN_MODE_TYPE_APP:
+                            default:
+                                setFirstBtnState();
+                                break;
+                        }
+                        break;
+                    case TASK_TYPE_GAME_SHEEP:
+                    case TASK_TYPE_GAME_TECENT:
+                    case TASK_TYPE_GAME_XIAO_MI://游戏任务
+                        setFirstBtnState();
+                        break;
+                    default://试玩任务直接设置下线状态
+                        setFirstBtnState();
+                        break;
+                }
+            } else {//有任务记录
+                btnUpImag.setText(CommonUtil.TASK_OFFLINE);//第二按钮不可点击且显示状态
+                btnUpImag.setEnabled(false);
+                switch (taskEty.getTask_type()) {// 1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1004 小米游戏任务
+                    case TASK_TYPE_CREDIT_CARD:
+                    case TASK_TYPE_CHANG_SI://信用卡与畅思任务不考虑
+                    case TASK_TYPE_APPLET://小程序
+                        bottom_btn_layout.setVisibility(View.GONE);
+                        break;
+                    case TASK_TYPE_SUCCESSION://连续任务
+                        switch (taskEty.getOpen_mode()) {//连续任务的打开方式 1:打开应用 2:H5内部 3:H5外部
+                            case OPEN_MODE_TYPE_H5_OUT:
+                            case OPEN_MODE_TYPE_H5_IN:
+                                type = TASK_TYPE_COMMON_H5 + taskEty.getOpen_mode();
+                                btnTaskItem.setText(START_TASK);
+                                break;
+                            case OPEN_MODE_TYPE_APP:
+                            default:
+                                setFirstBtnState();
+                                break;
+                        }
+                        int failChildPosition = taskEty.getFailChildPosition();//获取第一个审核失败子任务的位置
+                        if (type == DownloadUtil.STATUS_INSTALLED && failChildPosition > -1) {//已经安装并且有任务未完成的情况下
+                            setSecondBtnResubmit(failChildPosition);
                             break;
-                    }
-                    int failChildPosition = taskEty.getFailChildPosition();//获取第一个审核失败子任务的位置
-                    if (type == DownloadUtil.STATUS_INSTALLED && gettaskAcceptedEty != null && failChildPosition > -1) {//已经安装并且有任务未完成的情况下
-                        btnUpImag.setText(String.format(Locale.CHINA, "重新上传截图(第%d天)", failChildPosition + 1));
-                        btnUpImag.setEnabled(true);
-                    }
-                    break;
-                case TASK_TYPE_GAME_SHEEP:
-                case TASK_TYPE_GAME_TECENT:
-                case TASK_TYPE_GAME_XIAO_MI://游戏任务
-                    setFirstBtnState();
-                    break;
-                default://试玩任务直接设置下线状态
-                    setFirstBtnState();
-                    if (type == DownloadUtil.STATUS_INSTALLED && gettaskAcceptedEty != null && gettaskAcceptedEty.getStatus() != TaskAcceptedEty.STATUS_FINISHED) {//已经安装并且有任务未完成的情况下
-                        if (TextUtils.isEmpty(gettaskAcceptedEty.getScreenshots()) || gettaskAcceptedEty.getLower_num() > 0) {//没有提交过截图或者已经提交过一次 下线失败后提交
-                        } else {//提交过一次,但是审核失败或者没有审核就下线了
-                            btnUpImag.setText("重新提交");
-                            btnUpImag.setEnabled(true);
-                            btnUpImag.setVisibility(View.VISIBLE);
                         }
-                    }
-                    break;
+                        break;
+                    case TASK_TYPE_GAME_SHEEP:
+                    case TASK_TYPE_GAME_TECENT:
+                    case TASK_TYPE_GAME_XIAO_MI://游戏任务
+                        setFirstBtnState();
+                        break;
+                    case TASK_TYPE_H5://h5业务
+                        btnTaskItem.setVisibility(View.GONE);
+                        if (gettaskAcceptedEty.getStatus() != TaskAcceptedEty.STATUS_FINISHED) {//有任务未完成的情况下
+                            setSecondBtnResubmit();
+                        }
+                        break;
+                    default://试玩任务直接设置下线状态
+                        setFirstBtnState();
+                        if (type == DownloadUtil.STATUS_INSTALLED && gettaskAcceptedEty.getStatus() != TaskAcceptedEty.STATUS_FINISHED) {//已经安装并且有任务未完成的情况下
+                            setSecondBtnResubmit();
+                        }
+                        break;
+                }
+
             }
         } else {//任务未下线
             if(gettaskAcceptedEty == null) {//无任务记录-->显示领取任务按钮
@@ -412,20 +447,14 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
             } else {//有任务记录
                 switch (taskEty.getTask_type()) {// 1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1004 小米游戏任务
                     case TASK_TYPE_H5://h5业务
-                    case TASK_TYPE_APPLET://h5业务
-                        if(taskEty.isApplet()){
-                            btnTaskItem.setVisibility(View.GONE);
-                        }else {
-                            type = TASK_TYPE_COMMON_H5;
-                            btnTaskItem.setText(START_TASK);
-                        }
-
+                        type = TASK_TYPE_COMMON_H5;
+                        btnTaskItem.setText(START_TASK);
                         switch (gettaskAcceptedEty.getStatus()) {
                             case 1://"已接受任务";
                             case 2:// "正在进行中";
                                 break;
                             case 6://任务审核失败可以重新提交
-                                btnUpImag.setText("重新提交");
+                                setSecondBtnResubmit();
                                 break;
                             case 7:// "提交审核";
                                 btnUpImag.setText("正在审核");
@@ -439,6 +468,25 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                                 break;
                         }
                         break;
+                    case TASK_TYPE_APPLET://小程序任务
+                        btnTaskItem.setVisibility(View.GONE);
+                        switch (gettaskAcceptedEty.getStatus()) {
+                            case 1://"已接受任务";
+                            case 2:// "正在进行中";
+                                break;
+                            case 6://任务审核失败可以重新提交
+                                setSecondBtnResubmit();
+                                break;
+                            case 7:// "提交审核";
+                                btnUpImag.setText("正在审核");
+                                btnUpImag.setEnabled(false);
+                                break;
+                            case 3://完成任务
+                                btnUpImag.setText("已完成");
+                                btnUpImag.setEnabled(false);
+                                break;
+                        }
+                        break;
                     case 2:
                     case 1001://信用卡与畅思任务不考虑
                         bottom_btn_layout.setVisibility(View.GONE);
@@ -477,6 +525,36 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
             }
         }
     }
+    //设置第二按钮重新提交相关状态
+    private void setSecondBtnResubmit(int failChildPosition) {
+        switch (gettaskAcceptedEty.getAllowSubmit()) {
+            case TaskAcceptedEty.ALLOW_SUBMIT_NO:
+                btnUpImag.setEnabled(false);
+                btnUpImag.setText("任务失败");
+                btnUpImag.setVisibility(View.VISIBLE);
+                break;
+            case TaskAcceptedEty.ALLOW_SUBMIT_YES:
+                btnUpImag.setEnabled(true);
+                btnUpImag.setText(String.format(Locale.CHINA, "重新上传截图(第%d天)", failChildPosition + 1));
+                btnUpImag.setVisibility(View.VISIBLE);
+                break;
+        }
+    }
+    //设置第二按钮重新提交相关状态
+    private void setSecondBtnResubmit() {
+        switch (gettaskAcceptedEty.getAllowSubmit()) {
+            case TaskAcceptedEty.ALLOW_SUBMIT_NO:
+                btnUpImag.setEnabled(false);
+                btnUpImag.setText("任务失败");
+                btnUpImag.setVisibility(View.VISIBLE);
+                break;
+            case TaskAcceptedEty.ALLOW_SUBMIT_YES:
+                btnUpImag.setEnabled(true);
+                btnUpImag.setText("重新提交");
+                btnUpImag.setVisibility(View.VISIBLE);
+                break;
+        }
+    }
 
     /**
      * 设置应用自动审核的连续任务底部按钮的状态(任务未下线且有任务记录且已经安装游戏)
@@ -513,7 +591,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         boolean hasChildCanAccepted = taskEty.hasChildCanAccepted();//有子任务处于可领取状态
 
         if (hasChildFail) {
-            btnUpImag.setText(String.format(Locale.CHINA, "重新上传截图(第%d天)", failChildPosition + 1));
+            setSecondBtnResubmit(failChildPosition);
         } else if (hasChildRunning) {//有子任务正在进行
             btnUpImag.setText("上传截图");
         } else if (hasChildCanAccepted) {//有子任务处于可领取状态
@@ -583,17 +661,17 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
      */
     private void setSecondBtnState() {
         switch (gettaskAcceptedEty.getStatus()) {
-            case 1://"已接受任务";
-            case 2:// "正在进行中";
+            case TaskAcceptedEty.STATUS_ACCEPTED_TASK://"已接受任务";
+            case TaskAcceptedEty.STATUS_RUNNING:// "正在进行中";
                 break;
-            case 6://试玩任务审核失败可以重新提交
-                btnUpImag.setText("重新提交");
+            case TaskAcceptedEty.STATUS_AUDIT_FAILURE://试玩任务审核失败可以重新提交
+                setSecondBtnResubmit();
                 break;
-            case 7:// "提交审核";
+            case TaskAcceptedEty.STATUS_SUBMIT:// "提交审核";
                 btnUpImag.setText("正在审核");
                 btnUpImag.setEnabled(false);
                 break;
-            case 3://完成任务
+            case TaskAcceptedEty.STATUS_FINISHED://完成任务
                 btnUpImag.setText("已完成");
                 btnUpImag.setEnabled(false);
                 break;

+ 21 - 50
app/src/main/java/com/sheep/gamegroup/view/fragment/BaseListFragment.java

@@ -99,49 +99,21 @@ public abstract class BaseListFragment<T> extends BaseFragment {
         bottomLine = ViewUtil.setBottomLine(view_list, getNoMoreCallBack());
         view_list.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
         view_list.setAdapter(getAdapter());
-        view_list.addOnScrollListener(new RecyclerView.OnScrollListener() {
-            @Override
-            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
-                super.onScrollStateChanged(recyclerView, newState);
-                RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
-
-                if(layoutManager instanceof LinearLayoutManager){
-                    LinearLayoutManager linearLayoutManager = (LinearLayoutManager) layoutManager;
-                    //获取最后一个view 位置
-                    int lastItemPosition = linearLayoutManager.findLastVisibleItemPosition();
-
-//                    View childView = recyclerView.getChildAt(list.size() - 1);
-                    //底部bottom
-//                    int bottom = childView.getBottom();
-                    //正常来说RecycleView的顶部坐标应该是0,但是严格来考虑,当RecycleView设置了paddingTop时,所有子view的绘制将以paddingTop的位置为起始位置,所以实际的顶部应该是paddingTop的高度的数值.
-                    int topEdge=recyclerView.getPaddingBottom();
-
-                    if(newState == RecyclerView.SCROLL_STATE_IDLE && lastItemPosition + 1 == list.size()){
-
-                    }
-                }
-            }
-        });
     }
 
     protected void loadMoreData() {
-        new Handler().postDelayed(new Runnable() {
-            @Override
-            public void run() {
-                if(!loadMore){
-                    loadMore = true;
-                    if(ListUtil.size(list) >= per_page*page){
-                        page += 1;
-                        initData();
-                    }else {
-                        view_list.setNoMore(true);
-                        setNoMore(true);
-                    }
-                }else {
-                    view_list.loadMoreComplete();
-                }
+        if(!loadMore){
+            loadMore = true;
+            if(ListUtil.size(list) >= per_page*page){
+                page += 1;
+                initData();
+            }else {
+                view_list.setNoMore(true);
+                setNoMore(true);
             }
-        },1000);
+        }else {
+            view_list.loadMoreComplete();
+        }
     }
 
     public void setNoMore(boolean noMore) {
@@ -220,30 +192,31 @@ public abstract class BaseListFragment<T> extends BaseFragment {
     public int refreshDataType() {
         return 0;
     }
-
-    public void refreshData(){
+    public void clear(){
         lastMessage = null;
         setNoMore(false);
         empty_view.setVisibility(View.INVISIBLE);
         list.clear();
-        view_list.getAdapter().notifyDataSetChanged();
         page = 1;
+    }
+    public void refreshData(){
+        clear();
+        view_list.getAdapter().notifyDataSetChanged();
         initData();
     }
     protected List<T> newList;
-    private void loadList(List<T> addList){
+    protected void loadList(List<T> addList){
         ListUtil.addAllItem(list, addList);
         newList = addList;
         notifyDataSetChanged();
     }
     public void notifyDataSetChanged(){
-
         if(view_list == null)
             view_list = findViewById(R.id.view_list);
         if(empty_view == null)
             empty_view = findViewById(R.id.empty_view);
         loadMore = false;
-        CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
+        updateEmptyView();
         if(page == 1){
             view_list.refreshComplete();
         } else {
@@ -253,11 +226,9 @@ public abstract class BaseListFragment<T> extends BaseFragment {
         notifyData();
         view_list.getFootView().setVisibility(view_list.getAdapter().getItemCount() == 0?View.GONE : View.VISIBLE);
     }
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        // TODO: inflate a fragment view
-        View rootView = super.onCreateView(inflater, container, savedInstanceState);
-        return rootView;
+
+    protected void updateEmptyView(){
+        CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
     }
 
     @Override

+ 1 - 12
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtFind.java

@@ -1,12 +1,8 @@
 package com.sheep.gamegroup.view.fragment;
 
 import android.app.Activity;
-import android.os.Bundle;
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
 
 import com.kfzs.duanduan.utils.NumberFormatUtils;
 import com.sheep.gamegroup.model.entity.BaseMessage;
@@ -51,13 +47,6 @@ public class FgtFind extends BaseFragment {
         initData();
     }
 
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        // TODO: inflate a fragment view
-        View rootView = super.onCreateView(inflater, container, savedInstanceState);
-        return rootView;
-    }
-
     @BindView(R.id.indicator)
     TabLayout indicator;
     @BindView(R.id.pager)
@@ -124,7 +113,7 @@ public class FgtFind extends BaseFragment {
                     }
                     if (awaken_on == 1) {
                         count++;
-                        mAdapter.add(new FgtRouser(), "看点", 2);
+                        mAdapter.add(new FgtWatchFocus(), "看点", 2);
                     }
                     pager.setAdapter(mAdapter);
                     indicator.setupWithViewPager(pager);

+ 248 - 0
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtWatchFocus.java

@@ -0,0 +1,248 @@
+package com.sheep.gamegroup.view.fragment;
+
+import android.content.Intent;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.RequestOptions;
+import com.kfzs.appstore.utils.adapter.recyclerview.RecyclerViewAdapter;
+import com.kfzs.appstore.utils.adapter.recyclerview.ViewHolder;
+import com.sheep.gamegroup.model.api.ApiService;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.RouserArticlesEntity;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.GlideImageLoader;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.MyGridview;
+import com.sheep.gamegroup.util.TestUtil;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.adapter.ArrayAdapter;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.G;
+import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
+
+import org.afinal.simplecache.ApiKey;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import me.iwf.photopicker.PhotoPreview;
+import rx.Observable;
+
+/**
+ * Created by realicing on 2018/04/.
+ * realicing@sina.com
+ * 看点
+ */
+public class FgtWatchFocus extends BaseListFragment<RouserArticlesEntity> {
+
+    @Override
+    protected RecyclerView.Adapter getAdapter() {
+        return new RecyclerViewAdapter<RouserArticlesEntity>(SheepApp.getInstance(), R.layout.rouser_item, onlyShowInstalledApp ? showList : list) {
+
+            @Override
+            public void convert(final ViewHolder holder, final RouserArticlesEntity item, int position) {
+                View rootConvertView = holder.itemView;
+                View padding = rootConvertView.findViewById(R.id.padding);
+                padding.setVisibility(holder.getAdapterPosition() == 0 ? View.GONE : View.VISIBLE);
+                TextView gridview_item_tag_tv = (TextView) rootConvertView.findViewById(R.id.gridview_item_tag_tv);
+                final TextView item_name = (TextView) rootConvertView.findViewById(R.id.rouser_item_name);
+                TextView time_tv = (TextView) rootConvertView.findViewById(R.id.time_tv);
+                ImageView one_img_iv = (ImageView) rootConvertView.findViewById(R.id.one_img_iv);
+                if (item == null) {
+                    rootConvertView.setVisibility(View.GONE);
+                    return;
+                }
+                rootConvertView.setVisibility(View.VISIBLE);
+                MyGridview home_list_gridview_gv = (MyGridview) rootConvertView.findViewById(R.id.home_list_gridview_gv);
+                switch (item.getIdentifier()) {
+                    default:
+                        gridview_item_tag_tv.setVisibility(View.GONE);
+                        break;
+                    case 2:
+                        gridview_item_tag_tv.setVisibility(View.VISIBLE);
+                        gridview_item_tag_tv.setText("火热");
+                        gridview_item_tag_tv.setBackgroundResource(R.drawable.shape_red_stroke_rectangle_10_radius);
+                        gridview_item_tag_tv.setTextColor(activity.getResources().getColor(R.color.red_FD2D54));
+                        break;
+                    case 3:
+                        gridview_item_tag_tv.setVisibility(View.VISIBLE);
+                        gridview_item_tag_tv.setText("最新");
+                        gridview_item_tag_tv.setBackgroundResource(R.drawable.shape_blue_stroke_rectangle_10_radius);
+                        gridview_item_tag_tv.setTextColor(activity.getResources().getColor(R.color.btn_color_main_stroke));
+                        break;
+                }
+                ViewUtil.setText(item_name, item.getTitle());
+                ViewUtil.setText(time_tv, item.getContent());
+                if (!TextUtils.isEmpty(item.getImg())) {
+                    final String[] images = item.getImg().split(";");
+                    String[] images1 = new String[3];
+                    if (images.length > 1) {
+                        if (images.length > 3) {
+                            for (int i = 0; i < 3; i++) {
+                                images1[i] = images[i];
+                            }
+                        } else {
+                            images1 = new String[images.length];
+                            for (int i = 0; i < images.length; i++) {
+                                images1[i] = images[i];
+                            }
+                        }
+                        one_img_iv.setVisibility(View.GONE);
+                        home_list_gridview_gv.setVisibility(View.VISIBLE);
+                        home_list_gridview_gv.setAdapter(new ArrayAdapter<String>(activity, R.layout.rouser_image_adp, images1) {
+                            @Override
+                            public boolean convert(int position, View convertView, ViewGroup parent, String item) {
+                                ImageView imageView = convertView.findViewById(R.id.item_image_iv);
+                                Glide.with(activity)
+                                        .load(item + "")
+                                        .apply(new RequestOptions().dontAnimate().override(G.WIDTH / 3, G.WIDTH / 3))
+                                        .into(imageView);
+                                return true;
+                            }
+                        });
+                        final String[] finalImages = images1;
+                        home_list_gridview_gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+                            @Override
+                            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                                try {
+                                    PhotoPreview.builder()
+                                            .setPhotos(new ArrayList<>(Arrays.asList(finalImages)))
+                                            .setCurrentItem(position)
+                                            .setShowDeleteButton(false)
+                                            .start(activity, 101);
+
+                                } catch (Exception e) {
+                                    e.printStackTrace();
+                                }
+                            }
+                        });
+                    } else {
+                        one_img_iv.setVisibility(View.VISIBLE);
+                        home_list_gridview_gv.setVisibility(View.GONE);
+                        GlideImageLoader.setImage(one_img_iv, images[0]);
+                        one_img_iv.setOnClickListener(new View.OnClickListener() {
+                            @Override
+                            public void onClick(View v) {
+                                try {
+                                    PhotoPreview.builder()
+                                            .setPhotos(new ArrayList<>(Arrays.asList(images)))
+                                            .setCurrentItem(holder.getAdapterPosition())
+                                            .setShowDeleteButton(false)
+                                            .start(activity, 101);
+
+                                } catch (Exception e) {
+                                    e.printStackTrace();
+                                }
+                            }
+                        });
+                    }
+
+                } else {
+                    one_img_iv.setVisibility(View.GONE);
+                    home_list_gridview_gv.setVisibility(View.GONE);
+                }
+
+
+                //snssdk143://detail?groupid=6584333623434936835&gd_label=click_schema_hxhg15
+                rootConvertView.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        try {
+                            String deepLink = item.getDeeplink().trim();
+                            Intent intent = Intent.parseUri(deepLink, Intent.URI_INTENT_SCHEME);
+                            intent.setComponent(null);
+                            startActivity(intent);
+                            CommonUtil.getInstance().awakenDetail(item);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                            if(TestUtil.isTest())
+                                G.showToast(e.getMessage());
+                            else
+                                G.showToast(activity.getString(R.string.not_install, item.getApp_name()));
+                        }
+                    }
+                });
+            }
+        };
+    }
+
+    @Override
+    protected String getKey(int page, int per_page) {
+        return ApiKey.awakenArticle(page, per_page);
+    }
+
+    @Override
+    protected Observable<BaseMessage> getApi(ApiService apiService) {
+        return apiService.awakenApparticle(page, per_page);
+    }
+
+    @Override
+    protected Class<RouserArticlesEntity> getTClass() {
+        return RouserArticlesEntity.class;
+    }
+    //只显示已经安装的应用(没有包名的错误数据也不显示)
+    private boolean onlyShowInstalledApp = true;
+    //key表示包名,value代表是否安装
+    private Map<String, ArrayList<RouserArticlesEntity>> map = new HashMap<>();
+    //要显示的内容
+    protected List<RouserArticlesEntity> showList = ListUtil.emptyList();
+
+    @Override
+    protected boolean isFirstGetACache() {
+        return !onlyShowInstalledApp;//不显示未安装应用时不获取缓存数据
+    }
+
+    @Override
+    public void clear() {
+        super.clear();
+        if(onlyShowInstalledApp) {
+            showList.clear();
+            map.clear();
+        }
+    }
+
+    @Override
+    protected void updateEmptyView(){
+        if(onlyShowInstalledApp) {
+            for (RouserArticlesEntity item : newList) {
+                if (!TextUtils.isEmpty(item.getPackage_name())) {
+                    ArrayList<RouserArticlesEntity> entityList;
+                    if(map.containsKey(item.getPackage_name())){
+                        entityList = map.get(item.getPackage_name());
+                    } else {
+                        entityList = new ArrayList<>();
+                        map.put(item.getPackage_name(), entityList);
+                    }
+                    entityList.add(item);
+                }
+            }
+            showList.clear();
+            for (String packageName : map.keySet()) {
+                boolean isAppInstalled = PackageUtil.isAppInstalled(activity, packageName);
+                if(isAppInstalled){
+                    showList.addAll(map.get(packageName));
+                }
+            }
+            CommonUtil.getInstance().updateEmptyView(empty_view, showList.isEmpty());
+        } else {
+            super.updateEmptyView();
+        }
+    }
+    @Override
+    public void notifyData() {
+        if(onlyShowInstalledApp && showList.isEmpty() && !list.isEmpty()){//只显示安装的应用情况下,可能显示的数据为空,但是实际数据却很多,这时要直接进行下一页的获取,否则无法翻页
+            loadMoreData();
+        }
+    }
+}

+ 5 - 1
app/src/main/java/org/afinal/simplecache/ApiKey.java

@@ -85,10 +85,14 @@ public class ApiKey {
         return key+"oldEqualsNew";
     }
 
-    //获取任务详情
+    //看点
     public static String awakenApp(){
         return "app/awaken/article";
     }
+    //看点
+    public static String awakenArticle(int page, int per_page){
+        return String.format(Locale.CHINA, "app/awaken/article?page=%d&per_page=%d", page, per_page);
+    }
     //发现模块游戏或应用详情
     public static String playGameDetail(int id){
         return "app/find?id="+id;

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -92,4 +92,5 @@
     <string name="login_success">登录成功</string>
     <string name="commit_time_point">提交时间:</string>
     <string name="fail_reason">失败原因:%s</string>
+    <string name="not_install">还未安装:%s</string>
 </resources>