diff --git a/app/src/main/java/com/gh/gamecenter/NewsActivity.java b/app/src/main/java/com/gh/gamecenter/NewsActivity.java index cffc9ba024..562c00826b 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsActivity.java @@ -1272,7 +1272,7 @@ public class NewsActivity extends BaseActivity implements OnClickListener { super.onPause(); statusMap.clear(); DownloadManager.getInstance(this).removeObserver(dataWatcher); - if (!isSentReport) { + if (!isSentReport && entity != null) { long end = Calendar.getInstance().getTimeInMillis(); int seconds = (int) ((end - start) / 1000); diff --git a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java index 84a2cfede9..73c0eed460 100644 --- a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java @@ -41,6 +41,9 @@ public class SubjectActivity extends BaseActivity { private boolean isEverpause = false; private boolean isDestroy = false; + private LinearLayoutManager layoutManager; + private int page = 1; + private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { @@ -115,12 +118,26 @@ public class SubjectActivity extends BaseActivity { } }); + layoutManager = new LinearLayoutManager(this); + subject_list.setHasFixedSize(true); - subject_list.setLayoutManager(new LinearLayoutManager(this)); + subject_list.setLayoutManager(layoutManager); adapter = new SubjectAdapter(this, subject_list, subject_pb_loading, reuse_no_connection, id,order); subject_list.setAdapter(adapter); subject_list.addItemDecoration(new VerticalItemDecoration(this, 1)); + subject_list.setOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + super.onScrollStateChanged(recyclerView, newState); + if (!isDestroy && newState == RecyclerView.SCROLL_STATE_IDLE && adapter.getItemCount() == layoutManager.findLastVisibleItemPosition()+1&&adapter.isLoaded()){ + page++; + adapter.initList(page); + + } + } + }); + } public void onEventMainThread(EBPWDismiss dismiss) { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java index 5c5e73bd78..eb89a27ee4 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java @@ -27,6 +27,7 @@ import com.gh.download.DownloadEntry; import com.gh.gamecenter.GameDetailsActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SubjectActivity; +import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder; import com.gh.gamecenter.db.info.GameInfo; @@ -65,8 +66,9 @@ public class SubjectAdapter extends RecyclerView.Adapter list; - private boolean order; + private static final int FOOTER_ITEM = 101; + private boolean isLoaded; // 黄壮华 获取引用 修改2015/8/15 private ArrayMap locationMap; @@ -77,6 +79,12 @@ public class SubjectAdapter extends RecyclerView.Adapter(); + isLoaded = false; + isNetworkError = false; + this.id = id; - initList(id); + initList(page); } - private void initList(String id) { + public void initList(final int page) { + isLoaded =false; JsonArrayExtendedRequest request = new JsonArrayExtendedRequest( TimestampUtils.addTimestamp(Config.HOST - + "v1d50/game/column/" + id, Constants.GAME_CD), + + "v1d50/game/column/" + id +"?page="+ page, Constants.GAME_CD), new Response.Listener() { @Override @@ -122,12 +134,19 @@ public class SubjectAdapter extends RecyclerView.Adapter offset && position <= subjectList.get(i).getData().size() + offset) { - gameEntity = subjectList.get(i).getData().get(position - offset - 1); + int index = position -offset-1; + if (index<0){ + index = 0; + } + gameEntity = subjectList.get(i).getData().get(index); if (TextUtils.isEmpty(gameEntity.getImage()) && gameEntity.getTest() == null) { int order = position - offset - 1; if (subjectList.get(i).getData().get(0).getImage() != null) { @@ -828,7 +832,11 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter= offset && position <= subjectList.get(i).getData().size() + offset){ - gameEntity = subjectList.get(i).getData().get(position - offset); + int index = position -offset-1; + if (index<0){ + index = 0; + } + gameEntity = subjectList.get(i).getData().get(index); if (position == offset && TextUtils.isEmpty(gameEntity.getImage()) || position == offset+1&&!TextUtils.isEmpty(subjectList.get(i).getData().get(0).getImage())) { holder.thumb.setVisibility(View.GONE); holder.title.setText(subjectList.get(i).getName()); diff --git a/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java index c9ec280a80..4cce1563b0 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game2FragmentAdapter.java @@ -309,7 +309,11 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter= offset && position <= subjectList.get(i).getData().size() + offset) { - gameEntity = subjectList.get(i).getData().get(position - offset); + int index = position -offset; + if (index<0){ + index = 0; + } + gameEntity = subjectList.get(i).getData().get(index); if (position == offset && TextUtils.isEmpty(gameEntity.getImage()) || position == offset+1&&!TextUtils.isEmpty(subjectList.get(i).getData().get(0).getImage())) { holder.thumb.setVisibility(View.GONE); holder.title.setText(subjectList.get(i).getName()); @@ -346,7 +350,11 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter offset && position <= subjectList.get(i).getData().size() + offset) { - gameEntity = subjectList.get(i).getData().get(position - offset - 1); + int index = position -offset-1; + if (index<0){ + index = 0; + } + gameEntity = subjectList.get(i).getData().get(index); if (TextUtils.isEmpty(gameEntity.getImage()) && gameEntity.getTest() == null) { int order = position - offset - 1; if (subjectList.get(i).getData().get(0).getImage() != null) { @@ -405,7 +413,11 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter= offset && position <= subjectList.get(i).getData().size() + offset) { - gameEntity = subjectList.get(i).getData().get(position - offset - 1); + int index = position -offset-1; + if (index<0){ + index = 0; + } + gameEntity = subjectList.get(i).getData().get(index); if (gameEntity.getTest() != null) { int order = position - offset - 1; if (subjectList.get(i).getData().get(0).getImage() != null) { diff --git a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java index 249a5fefc4..5671942808 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java @@ -1,12 +1,10 @@ package com.gh.gamecenter.news; -import android.app.Activity; import android.content.Context; import android.support.v4.util.ArrayMap; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.RecyclerView; import android.util.DisplayMetrics; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -319,7 +317,7 @@ public class News1FragmentAdapter extends RecyclerView.Adapter