This commit is contained in:
huangzhuanghua
2016-10-20 14:24:17 +08:00
2 changed files with 86 additions and 10 deletions

View File

@ -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<GameEntity> gameList;//关注推荐列表
private List<GameEntity> recommendGameList;
private List<GameEntity> installGameList;//安装的游戏
private Map<Integer, Boolean> 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<ConcernInfo> 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<JSONObject>() {
@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<ArrayList<GameEntity>>() {}.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);
}