diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2bcd2eb8ba..64c1b0ee1d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -147,10 +147,18 @@
-
-
-
+
+
+
+
diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java
index 1582a8ec7a..0641778d4e 100644
--- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java
+++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java
@@ -26,13 +26,10 @@ import com.gh.gamecenter.R;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.DismissEntity;
import com.gh.gamecenter.entity.GameEntity;
-import com.gh.gamecenter.entity.GameUpdateEntity;
-import com.gh.gamecenter.eventbus.EBPutUrl;
import com.gh.gamecenter.eventbus.EBRedDot;
import com.gh.gamecenter.manager.DataCollectionManager;
import com.gh.gamecenter.manager.PackageManager;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
diff --git a/app/src/main/java/com/gh/common/view/DownloadDialog.java b/app/src/main/java/com/gh/common/view/DownloadDialog.java
index a929251df8..0431fdd257 100644
--- a/app/src/main/java/com/gh/common/view/DownloadDialog.java
+++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java
@@ -32,7 +32,6 @@ import android.widget.TextView;
import android.widget.Toast;
import com.gh.common.constant.Config;
-import com.gh.common.constant.Constants;
import com.gh.common.util.DataUtils;
import com.gh.common.util.DialogUtils;
import com.gh.common.util.DisplayUtils;
@@ -42,7 +41,6 @@ import com.gh.common.util.MD5Utils;
import com.gh.common.util.NetworkUtils;
import com.gh.common.util.PackageUtils;
import com.gh.common.util.PlatformUtils;
-import com.gh.common.util.SpeedUtils;
import com.gh.common.util.Utils;
import com.gh.download.DataWatcher;
import com.gh.download.DownloadEntry;
@@ -52,7 +50,6 @@ import com.gh.gamecenter.DownloadManagerActivity;
import com.gh.gamecenter.MainActivity;
import com.gh.gamecenter.R;
import com.gh.gamecenter.entity.ApkEntity;
-import com.gh.gamecenter.entity.AppEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.entity.GameUpdateEntity;
import com.gh.gamecenter.eventbus.EBDownloadDelete;
diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java
index 7e53be1882..183896eac8 100644
--- a/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java
@@ -3,7 +3,6 @@ package com.gh.gamecenter;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
-import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
diff --git a/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java
new file mode 100644
index 0000000000..d90e9352ac
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java
@@ -0,0 +1,88 @@
+package com.gh.gamecenter;
+
+import android.os.Bundle;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.gh.base.BaseActivity;
+import com.gh.common.util.DisplayUtils;
+import com.gh.gamecenter.adapter.GameNewsAdapter;
+import com.gh.gamecenter.adapter.GameNewsTypeListAdapter;
+
+import java.util.ArrayList;
+
+/**
+ * Created by LGT on 2016/8/29.
+ */
+public class GameNewsActivity extends BaseActivity {
+
+ private RecyclerView game_news_list;
+ private GameNewsAdapter adapter;
+ private LinearLayoutManager layoutManager;
+ private RecyclerView game_news_top_type_list;
+
+ private boolean isDestroy;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ isDestroy = false;
+
+ View contentView = View.inflate(this, R.layout.activity_game_news, null);
+
+ String gameName = getIntent().getStringExtra("gameName");
+ init(contentView, gameName);
+
+ ArrayList typeList = getIntent().getStringArrayListExtra("articleTypes");
+ typeList.add(0, "全部");
+
+ String gameId = getIntent().getStringExtra("gameId");
+
+ game_news_list.setHasFixedSize(true);
+ layoutManager = new LinearLayoutManager(this);
+ game_news_list.setLayoutManager(layoutManager);
+ adapter = new GameNewsAdapter(this, typeList, gameId);
+ game_news_list.setAdapter(adapter);
+ game_news_list.setOnScrollListener(new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
+ super.onScrolled(recyclerView, dx, dy);
+
+ if (layoutManager.findFirstVisibleItemPosition() >= 1) {
+ game_news_top_type_list.setVisibility(View.VISIBLE);
+ } else {
+ game_news_top_type_list.setVisibility(View.GONE);
+ }
+
+ }
+
+ @Override
+ public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
+ super.onScrollStateChanged(recyclerView, newState);
+ if (!isDestroy && newState == RecyclerView.SCROLL_STATE_IDLE
+ && layoutManager.findLastVisibleItemPosition() == 3) {
+ if (!adapter.isRemove() && !adapter.isLoading() && !adapter.isNetworkError()) {
+ adapter.addList(adapter.getNewsList().size());
+ }
+ }
+ }
+ });
+
+ game_news_top_type_list.setHasFixedSize(true);
+ game_news_top_type_list.setLayoutManager(new GridLayoutManager(this, 5));
+ game_news_top_type_list.setAdapter(new GameNewsTypeListAdapter(this, typeList));
+ ViewGroup.LayoutParams params = game_news_top_type_list.getLayoutParams();
+ params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(this, 40);
+ game_news_top_type_list.setLayoutParams(params);
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ isDestroy = true;
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/NewGameDetailsActivity.java b/app/src/main/java/com/gh/gamecenter/NewGameDetailsActivity.java
index b83b3cb396..4829a55b48 100644
--- a/app/src/main/java/com/gh/gamecenter/NewGameDetailsActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/NewGameDetailsActivity.java
@@ -5,7 +5,6 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
-import android.os.Message;
import android.support.v4.util.ArrayMap;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
@@ -30,7 +29,6 @@ import com.android.volley.VolleyError;
import com.gh.base.AppController;
import com.gh.base.BaseActivity;
import com.gh.common.constant.Config;
-import com.gh.common.constant.Constants;
import com.gh.common.util.ConcernUtils;
import com.gh.common.util.DataUtils;
import com.gh.common.util.DialogUtils;
@@ -728,11 +726,13 @@ public class NewGameDetailsActivity extends BaseActivity implements View.OnClick
ziXunViewHolder.llMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- if (entity.getArticleTypes()!= null&&gameEntity.getId()!=null&&gameEntity.getName()!= null){
- Intent intent = new Intent(context,GameDeatilsNewsActivity.class);
- intent.putExtra("articleTypes",entity.getArticleTypes());
- intent.putExtra("gameName",gameEntity.getName());
- intent.putExtra("gameId",gameId);
+ if (entity.getArticleTypes() != null
+ && gameEntity.getId() != null
+ && gameEntity.getName() != null) {
+ Intent intent = new Intent(context, GameNewsActivity.class);
+ intent.putExtra("articleTypes", entity.getArticleTypes());
+ intent.putExtra("gameName", gameEntity.getName());
+ intent.putExtra("gameId", gameId);
context.startActivity(intent);
}
}
diff --git a/app/src/main/java/com/gh/gamecenter/NewsActivity.java b/app/src/main/java/com/gh/gamecenter/NewsActivity.java
index c20206a1fa..9407976d1e 100644
--- a/app/src/main/java/com/gh/gamecenter/NewsActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/NewsActivity.java
@@ -8,7 +8,6 @@ import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
-import android.os.Message;
import android.os.SystemClock;
import android.support.v4.util.ArrayMap;
import android.support.v4.view.MotionEventCompat;
diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java
index 278e1e8762..ff565efaf7 100644
--- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java
@@ -7,8 +7,6 @@ import android.os.Bundle;
import android.support.v7.widget.CardView;
import android.telephony.TelephonyManager;
import android.text.Editable;
-import android.text.Html;
-import android.text.Spanned;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java
new file mode 100644
index 0000000000..7bdc632dc8
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java
@@ -0,0 +1,200 @@
+package com.gh.gamecenter.adapter;
+
+import android.content.Context;
+import android.net.Uri;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.volley.Response;
+import com.android.volley.VolleyError;
+import com.gh.base.AppController;
+import com.gh.common.constant.Config;
+import com.gh.common.util.DisplayUtils;
+import com.gh.common.view.VerticalItemDecoration;
+import com.gh.gamecenter.GameNewsActivity;
+import com.gh.gamecenter.R;
+import com.gh.gamecenter.adapter.viewholder.CardListViewHolder;
+import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
+import com.gh.gamecenter.adapter.viewholder.GameNewsSearchViewHolder;
+import com.gh.gamecenter.adapter.viewholder.GameNewsTypeListViewHolder;
+import com.gh.gamecenter.entity.NewsEntity;
+import com.gh.gamecenter.news.NewsListAdapter;
+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;
+
+/**
+ * Created by LGT on 2016/8/29.
+ */
+public class GameNewsAdapter extends RecyclerView.Adapter {
+
+ private Context context;
+
+ private ArrayList newsList;
+ private ArrayList typeList;
+
+ private String gameId;
+ private String newsType;
+
+ private int listsize;
+
+ private boolean isLoading;
+ private boolean isRemove;
+ private boolean isNetworkError;
+
+ public GameNewsAdapter(Context context, ArrayList tList, String id) {
+ this.context = context;
+
+ newsList = new ArrayList<>();
+ typeList = tList;
+
+ gameId = id;
+ newsType = "全部";
+
+ listsize = 0;
+
+ isLoading = false;
+ isRemove = false;
+ isNetworkError = false;
+
+ addList(0);
+ }
+
+ public void addList(final int offset) {
+ if (isLoading) {
+ return;
+ }
+ isLoading = true;
+
+ String url;
+ if ("全部".equals(newsType)) {
+ url = Config.HOST + "v1d45/game/" + gameId + "/news?limit=20&offset=" + offset;
+ } else {
+ url = Config.HOST + "v1d45/game/" + gameId + "/news?limit=20&offset="
+ + offset + "&type=" + Uri.encode(newsType);
+ }
+
+ JsonArrayExtendedRequest request = new JsonArrayExtendedRequest(url,
+ new Response.Listener() {
+ @Override
+ public void onResponse(JSONArray response) {
+ Type listType = new TypeToken>() {}.getType();
+ Gson gson = new Gson();
+ List list = gson.fromJson(response.toString(), listType);
+
+ if (list != null && list.size() != 0) {
+ newsList.addAll(list);
+ if (offset == 0) {
+ notifyItemRangeInserted(0, 4);
+ } else {
+ notifyItemChanged(2);
+ }
+ }
+
+ isLoading = false;
+ }
+ },
+ new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ isLoading = false;
+ }
+ });
+ AppController.addToRequestQueue(request, GameNewsActivity.class);
+ }
+
+ @Override
+ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ if (viewType == 0) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(
+ R.layout.game_news_search_item, parent, false);
+ return new GameNewsSearchViewHolder(view);
+ } else if (viewType == 1) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(
+ R.layout.game_news_type_item, parent, false);
+ return new GameNewsTypeListViewHolder(view);
+ } else if (viewType == 2) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(
+ R.layout.reuse_card_list, parent, false);
+ return new CardListViewHolder(view);
+ } else {
+ View view = LayoutInflater.from(parent.getContext()).inflate(
+ R.layout.refresh_footerview, parent, false);
+ return new FooterViewHolder(view);
+ }
+ }
+
+ @Override
+ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+ if (holder instanceof GameNewsTypeListViewHolder) {
+ GameNewsTypeListViewHolder viewHolder = (GameNewsTypeListViewHolder) holder;
+ ViewGroup.LayoutParams params = viewHolder.game_news_type_list.getLayoutParams();
+ params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(context, 40);
+ viewHolder.game_news_type_list.setLayoutParams(params);
+
+ if (viewHolder.game_news_type_list.getAdapter() == null) {
+ viewHolder.game_news_type_list.setHasFixedSize(true);
+ viewHolder.game_news_type_list.setLayoutManager(new GridLayoutManager(context, 5));
+ viewHolder.game_news_type_list.setAdapter(new GameNewsTypeListAdapter(context, typeList));
+ }
+ } else if (holder instanceof CardListViewHolder) {
+ CardListViewHolder viewHolder = (CardListViewHolder) holder;
+ int height = DisplayUtils.dip2px(context, 37) * newsList.size()
+ + DisplayUtils.dip2px(context, 1) * (newsList.size() - 1);
+ ViewGroup.LayoutParams params = viewHolder.card_list_show.getLayoutParams();
+ params.height = height;
+ viewHolder.card_list_show.setLayoutParams(params);
+ if (viewHolder.card_list_show.getAdapter() == null) {
+ viewHolder.card_list_show.setHasFixedSize(true);
+ viewHolder.card_list_show.setLayoutManager(new LinearLayoutManager(context));
+ viewHolder.card_list_show.setAdapter(new NewsListAdapter(context, newsList, "游戏新闻"));
+ viewHolder.card_list_show.addItemDecoration(new VerticalItemDecoration(context, 1));
+ listsize = newsList.size();
+ } else {
+ viewHolder.card_list_show.getAdapter().notifyItemRangeInserted(
+ listsize + 1, newsList.size() - listsize);
+ listsize = newsList.size();
+ }
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ if (newsList.isEmpty()) {
+ return 0;
+ }
+ return 4;
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ return position;
+ }
+
+ public ArrayList getNewsList() {
+ return newsList;
+ }
+
+ public boolean isLoading() {
+ return isLoading;
+ }
+
+ public boolean isRemove() {
+ return isRemove;
+ }
+
+ public boolean isNetworkError() {
+ return isNetworkError;
+ }
+
+}
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java
new file mode 100644
index 0000000000..f49a157141
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java
@@ -0,0 +1,46 @@
+package com.gh.gamecenter.adapter;
+
+import android.content.Context;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.gh.gamecenter.R;
+import com.gh.gamecenter.adapter.viewholder.GameNewsTypeViewHolder;
+
+import java.util.ArrayList;
+
+/**
+ * Created by LGT on 2016/8/29.
+ */
+public class GameNewsTypeListAdapter extends RecyclerView.Adapter {
+
+ private Context context;
+
+ private ArrayList typeList;
+
+ public GameNewsTypeListAdapter(Context context, ArrayList tList) {
+ this.context = context;
+
+ typeList = tList;
+ }
+
+ @Override
+ public GameNewsTypeViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(
+ R.layout.game_news_type_list_item, parent, false);
+ return new GameNewsTypeViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(final GameNewsTypeViewHolder holder, int position) {
+ holder.game_news_type_list_tv_type.setText(typeList.get(position));
+ }
+
+ @Override
+ public int getItemCount() {
+ return typeList.size();
+ }
+
+}
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameNewsSearchViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameNewsSearchViewHolder.java
new file mode 100644
index 0000000000..34a1ea3e73
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameNewsSearchViewHolder.java
@@ -0,0 +1,26 @@
+package com.gh.gamecenter.adapter.viewholder;
+
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import com.gh.gamecenter.R;
+
+/**
+ * Created by LGT on 2016/8/29.
+ */
+public class GameNewsSearchViewHolder extends RecyclerView.ViewHolder {
+
+ public EditText game_news_et_search;
+ public TextView game_news_tv_search;
+
+ public GameNewsSearchViewHolder(View itemView) {
+ super(itemView);
+
+ game_news_et_search = (EditText) itemView.findViewById(R.id.game_news_et_search);
+ game_news_tv_search = (TextView) itemView.findViewById(R.id.game_news_tv_search);
+
+ }
+
+}
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameNewsTypeListViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameNewsTypeListViewHolder.java
new file mode 100644
index 0000000000..d95cf81bb7
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameNewsTypeListViewHolder.java
@@ -0,0 +1,22 @@
+package com.gh.gamecenter.adapter.viewholder;
+
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+import com.gh.gamecenter.R;
+
+/**
+ * Created by LGT on 2016/8/29.
+ */
+public class GameNewsTypeListViewHolder extends RecyclerView.ViewHolder {
+
+ public RecyclerView game_news_type_list;
+
+ public GameNewsTypeListViewHolder(View itemView) {
+ super(itemView);
+
+ game_news_type_list = (RecyclerView) itemView.findViewById(R.id.game_news_type_list);
+
+ }
+
+}
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameNewsTypeViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameNewsTypeViewHolder.java
new file mode 100644
index 0000000000..479adc8cb2
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameNewsTypeViewHolder.java
@@ -0,0 +1,22 @@
+package com.gh.gamecenter.adapter.viewholder;
+
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.TextView;
+
+import com.gh.gamecenter.R;
+
+/**
+ * Created by LGT on 2016/8/29.
+ */
+public class GameNewsTypeViewHolder extends RecyclerView.ViewHolder {
+
+ public TextView game_news_type_list_tv_type;
+
+ public GameNewsTypeViewHolder(View itemView) {
+ super(itemView);
+
+ game_news_type_list_tv_type = (TextView) itemView.findViewById(R.id.game_news_type_list_tv_type);
+ }
+
+}
diff --git a/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java b/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java
index 01570f154c..3658a893f6 100644
--- a/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java
+++ b/app/src/main/java/com/gh/gamecenter/game/Game1Fragment.java
@@ -14,14 +14,12 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
-import android.widget.TextView;
import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
import com.gh.base.AppController;
import com.gh.common.constant.Constants;
import com.gh.common.util.DownloadItemUtils;
import com.gh.common.util.Utils;
-import com.gh.common.view.VerticalItemDecoration;
import com.gh.download.DataWatcher;
import com.gh.download.DownloadEntry;
import com.gh.download.DownloadManager;
diff --git a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java
index 5dfb20808a..c8589b8df7 100644
--- a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java
@@ -60,12 +60,10 @@ import com.gh.gamecenter.entity.SubjectEntity;
import com.gh.gamecenter.manager.ConcernManager;
import com.gh.gamecenter.manager.GameManager;
import com.gh.gamecenter.manager.PackageManager;
-import com.gh.gamecenter.search.SearchHistoryListAdapter;
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 com.j256.ormlite.stmt.query.In;
import org.json.JSONArray;
import org.json.JSONObject;
diff --git a/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java b/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java
index d130aa1429..8557bd68da 100644
--- a/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java
+++ b/app/src/main/java/com/gh/gamecenter/game/Game3Fragment.java
@@ -20,7 +20,6 @@ import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
import com.gh.base.AppController;
import com.gh.common.constant.Constants;
import com.gh.common.util.DownloadItemUtils;
-import com.gh.common.view.VerticalItemDecoration;
import com.gh.download.DataWatcher;
import com.gh.download.DownloadEntry;
import com.gh.download.DownloadManager;
diff --git a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java
index bfad20d748..b336b1152d 100644
--- a/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java
+++ b/app/src/main/java/com/gh/gamecenter/news/News1Fragment.java
@@ -13,7 +13,6 @@ import android.view.ViewGroup;
import android.widget.LinearLayout;
import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
-import com.gh.common.view.VerticalItemDecoration;
import com.gh.gamecenter.R;
import com.gh.gamecenter.eventbus.EBNetworkState;
import com.gh.gamecenter.eventbus.EBUISwitch;
diff --git a/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java
index e841946de2..36b50c048f 100644
--- a/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java
+++ b/app/src/main/java/com/gh/gamecenter/news/News2Fragment.java
@@ -13,7 +13,6 @@ import android.view.ViewGroup;
import android.widget.LinearLayout;
import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
-import com.gh.common.view.VerticalItemDecoration;
import com.gh.gamecenter.R;
import com.gh.gamecenter.eventbus.EBNetworkState;
import com.gh.gamecenter.eventbus.EBUISwitch;
diff --git a/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java
index 8955bca168..4361b96447 100644
--- a/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java
+++ b/app/src/main/java/com/gh/gamecenter/news/News3Fragment.java
@@ -14,7 +14,6 @@ import android.widget.TextView;
import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
import com.gh.base.AppController;
-import com.gh.common.view.VerticalItemDecoration;
import com.gh.gamecenter.R;
import com.gh.gamecenter.eventbus.EBNetworkState;
import com.gh.gamecenter.eventbus.EBUISwitch;
diff --git a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragment.java b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragment.java
index 62b645531d..9b18012495 100644
--- a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragment.java
+++ b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragment.java
@@ -11,8 +11,6 @@ import android.view.ViewGroup;
import android.widget.AbsListView;
import com.gh.common.util.DisplayUtils;
-import com.gh.common.util.Utils;
-import com.gh.common.view.VerticalItemDecoration;
import com.gh.gamecenter.R;
import com.gh.gamecenter.eventbus.EBMoveTop;
import com.gh.gamecenter.eventbus.EBSlide;
diff --git a/app/src/main/java/com/gh/gamecenter/personal/InstallFragment.java b/app/src/main/java/com/gh/gamecenter/personal/InstallFragment.java
index d80c7f1902..64209a8562 100644
--- a/app/src/main/java/com/gh/gamecenter/personal/InstallFragment.java
+++ b/app/src/main/java/com/gh/gamecenter/personal/InstallFragment.java
@@ -11,8 +11,6 @@ import android.view.ViewGroup;
import android.widget.AbsListView;
import com.gh.common.util.DisplayUtils;
-import com.gh.common.util.Utils;
-import com.gh.common.view.VerticalItemDecoration;
import com.gh.gamecenter.R;
import com.gh.gamecenter.eventbus.EBMoveTop;
import com.gh.gamecenter.eventbus.EBSlide;
diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java
index c5f3c6722f..7397d6d7b2 100644
--- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java
+++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java
@@ -18,7 +18,6 @@ import android.widget.TextView;
import com.gh.base.AppController;
import com.gh.common.util.DisplayUtils;
-import com.gh.common.util.Utils;
import com.gh.gamecenter.R;
import com.gh.gamecenter.SettingActivity;
import com.gh.gamecenter.eventbus.EBMoveTop;
diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java
index 12947f6cab..e208145012 100644
--- a/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java
@@ -14,8 +14,8 @@ import android.view.Window;
import com.gh.common.util.DisplayUtils;
import com.gh.common.view.VerticalItemDecoration;
import com.gh.gamecenter.R;
-import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder;
import com.gh.gamecenter.adapter.viewholder.CardListViewHolder;
+import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder;
import com.gh.gamecenter.db.SearchHistoryDao;
import java.util.ArrayList;
diff --git a/app/src/main/java/com/kyleduo/switchbutton/Configuration.java b/app/src/main/java/com/kyleduo/switchbutton/Configuration.java
index 2443adf6ae..8eeec3ec14 100644
--- a/app/src/main/java/com/kyleduo/switchbutton/Configuration.java
+++ b/app/src/main/java/com/kyleduo/switchbutton/Configuration.java
@@ -7,8 +7,6 @@ import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.StateListDrawable;
import android.view.View;
-import com.gh.common.util.Utils;
-
import java.lang.reflect.Field;
/**
diff --git a/app/src/main/res/drawable/game_item_btn_download_up.xml b/app/src/main/res/drawable/game_item_btn_download_up.xml
index b4c03e87c5..595c27ec5f 100644
--- a/app/src/main/res/drawable/game_item_btn_download_up.xml
+++ b/app/src/main/res/drawable/game_item_btn_download_up.xml
@@ -4,6 +4,6 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_game_news.xml b/app/src/main/res/layout/activity_game_news.xml
new file mode 100644
index 0000000000..f5e667dcb2
--- /dev/null
+++ b/app/src/main/res/layout/activity_game_news.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/game_news_search_item.xml b/app/src/main/res/layout/game_news_search_item.xml
new file mode 100644
index 0000000000..07b4162f50
--- /dev/null
+++ b/app/src/main/res/layout/game_news_search_item.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/game_news_type_item.xml b/app/src/main/res/layout/game_news_type_item.xml
new file mode 100644
index 0000000000..c8d96f43a7
--- /dev/null
+++ b/app/src/main/res/layout/game_news_type_item.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/game_news_type_list_item.xml b/app/src/main/res/layout/game_news_type_list_item.xml
new file mode 100644
index 0000000000..bcc767d36b
--- /dev/null
+++ b/app/src/main/res/layout/game_news_type_list_item.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file