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 0b4cb9bdab..4ac995e378 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java @@ -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 gameList;//关注推荐列表 + private List recommendGameList; + + private Map 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() { + @Override + public void onResponse(JSONArray response) { + 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.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 diff --git a/app/src/main/res/drawable-hdpi/concern_select_false.png b/app/src/main/res/drawable-hdpi/concern_select_false.png new file mode 100644 index 0000000000..ce0e2cade7 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/concern_select_false.png differ diff --git a/app/src/main/res/drawable-hdpi/concern_select_true.png b/app/src/main/res/drawable-hdpi/concern_select_true.png new file mode 100644 index 0000000000..705706b70b Binary files /dev/null and b/app/src/main/res/drawable-hdpi/concern_select_true.png differ diff --git a/app/src/main/res/drawable/textview_white_dn.xml b/app/src/main/res/drawable/textview_white_dn.xml new file mode 100644 index 0000000000..b7f9fad0b0 --- /dev/null +++ b/app/src/main/res/drawable/textview_white_dn.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_white_style.xml b/app/src/main/res/drawable/textview_white_style.xml new file mode 100644 index 0000000000..1f2672f282 --- /dev/null +++ b/app/src/main/res/drawable/textview_white_style.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_white_up.xml b/app/src/main/res/drawable/textview_white_up.xml new file mode 100644 index 0000000000..9abc96b62c --- /dev/null +++ b/app/src/main/res/drawable/textview_white_up.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/concern_item.xml b/app/src/main/res/layout/concern_item.xml index e9f33c3e9d..5924189756 100644 --- a/app/src/main/res/layout/concern_item.xml +++ b/app/src/main/res/layout/concern_item.xml @@ -25,21 +25,34 @@ android:textColor="@color/title" android:textSize="14sp" /> - + android:layout_height="wrap_content"> + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_news4.xml b/app/src/main/res/layout/fragment_news4.xml index 996a6bcd5b..7e35d8eb33 100644 --- a/app/src/main/res/layout/fragment_news4.xml +++ b/app/src/main/res/layout/fragment_news4.xml @@ -1,5 +1,7 @@ - @@ -22,8 +24,80 @@ android:layout_centerInParent="true" android:background="@color/theme" /> + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file