issues97:资讯-关注的内容为空时,增加推荐关注的小板块

This commit is contained in:
khy
2016-10-12 18:54:18 +08:00
parent c9cdf51b51
commit f0b473db2c
8 changed files with 277 additions and 18 deletions

View File

@ -3,19 +3,39 @@ package com.gh.gamecenter.news;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.util.ArrayMap;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.volley.Response;
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.ConcernActivity;
import com.gh.gamecenter.R;
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.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.json.JSONArray;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Created by khy on 2016/8/15.
@ -30,10 +50,20 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On
private LinearLayoutManager layoutManager;
private LinearLayout reuse_no_connection;
private LinearLayout reuse_none_data;
private LinearLayout news4_concern_ly;
private LinearLayout news4_recommend_ly;
private ProgressBarCircularIndeterminate news_pb_loading;
private TextView news4_concern;
private boolean isEverpause;
private List<GameEntity> gameList;//关注推荐列表
private List<GameEntity> recommendGameList;
private Map<Integer, Boolean> concernMap;//记录选择关注
private ConcernManager concernManager;
private Handler handler = new Handler();
@Override
@ -44,6 +74,9 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On
isEverpause = false;
concernManager = new ConcernManager(getActivity());
concernMap = new ArrayMap<>();
news_rv_show.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(getActivity());
news_rv_show.setLayoutManager(layoutManager);
@ -66,6 +99,17 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On
news_swipe_refresh.setColorSchemeResources(R.color.theme);
news_swipe_refresh.setOnRefreshListener(this);
news4_concern.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (Integer integer : concernMap.keySet()) {
if (concernMap.get(integer)){
concernManager.addByEntity(recommendGameList.get(integer));//添加关注
}
}
}
});
reuse_no_connection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -199,6 +243,98 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On
news_rv_show.setVisibility(View.GONE);
reuse_none_data.setVisibility(View.VISIBLE);
news_swipe_refresh.setRefreshing(false);
initConcernRecommend();
}
private void initConcernRecommend() {
JsonArrayExtendedRequest recommendRequest = new JsonArrayExtendedRequest(
Config.HOST + "v1d45/game/remenkapai",
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
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.add(gameList.get(i));
}
}
}
if (recommendGameList.size() != 0) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
initConcernRecommendView();
}
});
}
}
}, null);
AppController.addToRequestQueue(recommendRequest, ConcernActivity.TAG);
}
private void initConcernRecommendView() {
news4_concern_ly.removeAllViews();
ImageView ivIcon;
TextView tvName;
ImageView ivConcern;
for (int i = 0; i < 4; i++){
concernMap.put(i, true);
View view = View.inflate(getActivity(), R.layout.concern_item, null);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.MATCH_PARENT);
params.weight = 1;
ivIcon = (ImageView) view.findViewById(R.id.concern_item_icon);
tvName = (TextView) view.findViewById(R.id.concern_item_name);
ivConcern = (ImageView) view.findViewById(R.id.concern_item_concern_iv);
view.findViewById(R.id.concern_item_concern).setVisibility(View.GONE);
ivConcern.setVisibility(View.VISIBLE);
ImageUtils.getInstance(getActivity()).display(recommendGameList.get(i).getIcon(), ivIcon);
tvName.setText(recommendGameList.get(i).getName());
ivConcern.setImageResource(R.drawable.concern_select_true);
news4_concern_ly.addView(view,params);
final ImageView finalIvConcern = ivConcern;
final int finalI = i;
ivConcern.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (concernMap.get(finalI)){
finalIvConcern.setImageResource(R.drawable.concern_select_false);
concernMap.put(finalI, false);
}else {
finalIvConcern.setImageResource(R.drawable.concern_select_true);
concernMap.put(finalI, true);
}
//判断关注按钮是否可用
boolean isEnabled = false;
for (Integer integer : concernMap.keySet()) {
if (concernMap.get(integer)){
isEnabled = true;
break;
}
}
if (isEnabled){
news4_concern.setTextColor(getResources().getColor(R.color.theme));
news4_concern.setEnabled(true);
}else {
news4_concern.setTextColor(getResources().getColor(R.color.btn_pause));
news4_concern.setEnabled(false);
}
}
});
}
news4_recommend_ly.setVisibility(View.VISIBLE);
}
@Override