diff --git a/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java index a69df61578..e961cdf0e4 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java @@ -14,22 +14,26 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.android.volley.Response; +import com.android.volley.VolleyError; import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.AppController; import com.gh.base.BaseFragment; import com.gh.common.constant.Config; import com.gh.common.util.ImageUtils; import com.gh.gamecenter.R; +import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.eventbus.EBConcernChanged; import com.gh.gamecenter.eventbus.EBNetworkState; import com.gh.gamecenter.eventbus.EBUISwitch; import com.gh.gamecenter.manager.ConcernManager; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; +import com.gh.gamecenter.volley.extended.JsonObjectExtendedRequest; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import org.json.JSONArray; +import org.json.JSONObject; import java.lang.reflect.Type; import java.util.ArrayList; @@ -58,6 +62,7 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On private List gameList;//关注推荐列表 private List recommendGameList; + private List installGameList;//安装的游戏 private Map concernMap;//记录选择关注 @@ -251,7 +256,64 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On reuse_none_data.setVisibility(View.VISIBLE); news_swipe_refresh.setRefreshing(false); - initConcernRecommend(); + initInstallGame(); + } + + private int count; + + //推荐关注改为手机安装的游戏+光环助手 + private void initInstallGame() { + List installedList = concernManager.getInstalledGame(); + String gameId; + + final int size = installedList.size() + 1; + + installGameList = new ArrayList<>(); + recommendGameList = new ArrayList<>(); + for (int i = 0 ; i < size ; i++) { + if (i == size - 1){ + gameId = "5618b86e8ab49e17088b4575"; // 光环助手ID + }else { + gameId = installedList.get(i).getId(); + } + + final int finalI = i; + JsonObjectExtendedRequest request = new JsonObjectExtendedRequest( + Config.HOST + "game/" + gameId + "/digest", + new Response.Listener() { + @Override + public void onResponse(JSONObject response) { + Gson gson = new Gson(); + GameEntity gameEntity = gson.fromJson(response.toString(), GameEntity.class); + + if (finalI == size - 1){ + recommendGameList.add(gameEntity); + }else { + installGameList.add(gameEntity); + } + + addCount(); + if (count == size) { + initConcernRecommend(); + } + } + }, new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + addCount(); + if (count == size) { + initConcernRecommend(); + } + } + }); + AppController.addToRequestQueue(request, TAG); + } + } + + private void addCount() { + synchronized (News4Fragment.class) { + count++; + } } private void initConcernRecommend() { @@ -263,16 +325,30 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On Type listType = new TypeToken>() {}.getType(); Gson gson = new Gson(); gameList = gson.fromJson(response.toString(), listType); + + //根据热门卡牌顺序进行排序 if (gameList != null && gameList.size() != 0) { - recommendGameList = new ArrayList<>(); for (int i = 0, size = gameList.size(); i < size; i++) { - if (!concernManager.isConcern(gameList.get(i).getId()) - && recommendGameList.size() < 4) { - recommendGameList.add(gameList.get(i)); + if (!concernManager.isConcern(gameList.get(i).getId())) { + for (int j = 0; j < installGameList.size(); j++) { + if (recommendGameList.size() >= 4) continue; + if (installGameList.get(j).getId().equals(gameList.get(i).getId())) { + recommendGameList.add(gameList.get(i)); + installGameList.remove(j); + } + } } } } + //自由排序 + if (recommendGameList.size() < 4){ + for (GameEntity gameEntity : installGameList) { + if (recommendGameList.size() >= 4) continue; + recommendGameList.add(gameEntity); + } + } + if (recommendGameList != null && recommendGameList.size() != 0) { getActivity().runOnUiThread(new Runnable() { @Override @@ -320,7 +396,7 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On if (concernMap.get(finalI)){ finalIvConcern.setImageResource(R.drawable.concern_select_false); concernMap.put(finalI, false); - }else { + } else { finalIvConcern.setImageResource(R.drawable.concern_select_true); concernMap.put(finalI, true); } diff --git a/app/src/main/res/layout/fm_read2_special1.xml b/app/src/main/res/layout/fm_read2_special1.xml index 83a3323a96..6f9e245980 100644 --- a/app/src/main/res/layout/fm_read2_special1.xml +++ b/app/src/main/res/layout/fm_read2_special1.xml @@ -7,8 +7,8 @@ android:orientation="vertical" android:paddingLeft="12dp" android:paddingRight="12dp" - android:paddingTop="15dp" - android:paddingBottom="15dp" + android:paddingTop="12dp" + android:paddingBottom="10dp" app:left="8dp" app:right="8dp" app:bottom="8dp"> @@ -21,13 +21,13 @@ android:maxLines="2" android:lineSpacingMultiplier="1.2" android:textColor="@color/title" - android:textSize="14sp" /> + android:textSize="14sp" + android:layout_marginBottom="8dp" />