diff --git a/app/src/main/java/android/support/v7/widget/AdapterHelper.java b/app/src/main/java/android/support/v7/widget/AdapterHelper.java index e1db0f74ae..9b8eb22fdd 100644 --- a/app/src/main/java/android/support/v7/widget/AdapterHelper.java +++ b/app/src/main/java/android/support/v7/widget/AdapterHelper.java @@ -429,7 +429,8 @@ class AdapterHelper implements OpReorderer.Callback { if (DEBUG) { Log.d(TAG, "postponing " + op); } - mPostponedList.add(op); +// Utils.log("add UpdateOp to PostponedList"); +// mPostponedList.add(op); switch (op.cmd) { case UpdateOp.ADD: mCallback.offsetPositionsForAdd(op.positionStart, op.itemCount); diff --git a/app/src/main/java/android/support/v7/widget/RecyclerView.java b/app/src/main/java/android/support/v7/widget/RecyclerView.java index 0168363893..1e82ec7d25 100644 --- a/app/src/main/java/android/support/v7/widget/RecyclerView.java +++ b/app/src/main/java/android/support/v7/widget/RecyclerView.java @@ -3295,8 +3295,12 @@ public class RecyclerView extends ViewGroup { } } if (holder == null) { -// final int offsetPosition = mAdapterHelper.findPositionOffset(position); - final int offsetPosition = position; + final int offsetPosition = mAdapterHelper.findPositionOffset(position); +// final int offsetPosition = position; +// Utils.log("offsetPosition position = " + position); +// Utils.log("offsetPosition = " + offsetPosition); +// Utils.log("offsetPosition count = " + mAdapter.getItemCount()); +// Utils.log("offsetPosition count = " + mState.getItemCount()); if (offsetPosition < 0 || offsetPosition >= mAdapter.getItemCount()) { throw new IndexOutOfBoundsException("Inconsistency detected. Invalid item " + "position " + position + "(offset:" + offsetPosition + ")." diff --git a/app/src/main/java/com/gh/base/BaseActivity.java b/app/src/main/java/com/gh/base/BaseActivity.java index a0501a7629..1de4b7d93f 100644 --- a/app/src/main/java/com/gh/base/BaseActivity.java +++ b/app/src/main/java/com/gh/base/BaseActivity.java @@ -24,7 +24,6 @@ import com.gh.common.util.RunningUtils; import com.gh.common.util.ShareUtils; import com.gh.common.util.Utils; import com.gh.download.DownloadManager; -import com.gh.gamecenter.MainActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBShowDialog; import com.gh.gamecenter.listener.OnCallBackListener; @@ -175,8 +174,6 @@ public class BaseActivity extends Activity implements OnCallBackListener { DialogUtils.showUninstallDialog(this, new DialogUtils.ConfiremListener() { @Override public void onConfirem() { - MainActivity.uninstallMap.put( - PackageUtils.getPackageNameByPath(BaseActivity.this, showDialog.getPath()), showDialog.getPath()); startActivity(PackageUtils.getUninstallIntent(BaseActivity.this, showDialog.getPath())); } }); @@ -185,8 +182,6 @@ public class BaseActivity extends Activity implements OnCallBackListener { @Override public void onConfirem() { - MainActivity.uninstallMap.put( - PackageUtils.getPackageNameByPath(BaseActivity.this, showDialog.getPath()), showDialog.getPath()); startActivity(PackageUtils.getUninstallIntent(BaseActivity.this, showDialog.getPath())); } }); diff --git a/app/src/main/java/com/gh/base/BaseFragmentActivity.java b/app/src/main/java/com/gh/base/BaseFragmentActivity.java index b35a6b3508..1c570f12a1 100644 --- a/app/src/main/java/com/gh/base/BaseFragmentActivity.java +++ b/app/src/main/java/com/gh/base/BaseFragmentActivity.java @@ -24,7 +24,6 @@ import com.gh.common.util.RunningUtils; import com.gh.common.util.ShareUtils; import com.gh.common.util.Utils; import com.gh.download.DownloadManager; -import com.gh.gamecenter.MainActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBShowDialog; import com.gh.gamecenter.manager.SystemBarTintManager; @@ -163,8 +162,6 @@ public class BaseFragmentActivity extends FragmentActivity { DialogUtils.showUninstallDialog(this, new DialogUtils.ConfiremListener() { @Override public void onConfirem() { - MainActivity.uninstallMap.put( - PackageUtils.getPackageNameByPath(BaseFragmentActivity.this, showDialog.getPath()), showDialog.getPath()); startActivity(PackageUtils.getUninstallIntent(BaseFragmentActivity.this, showDialog.getPath())); } }); @@ -173,8 +170,6 @@ public class BaseFragmentActivity extends FragmentActivity { @Override public void onConfirem() { - MainActivity.uninstallMap.put( - PackageUtils.getPackageNameByPath(BaseFragmentActivity.this, showDialog.getPath()), showDialog.getPath()); startActivity(PackageUtils.getUninstallIntent(BaseFragmentActivity.this, showDialog.getPath())); } }); diff --git a/app/src/main/java/com/gh/base/DetailActivity.java b/app/src/main/java/com/gh/base/DetailActivity.java index 2dac625add..5a5db4a13a 100644 --- a/app/src/main/java/com/gh/base/DetailActivity.java +++ b/app/src/main/java/com/gh/base/DetailActivity.java @@ -27,13 +27,11 @@ import com.gh.download.DataWatcher; import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; 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.GameEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBPackage; -import com.gh.gamecenter.eventbus.EBPutUrl; import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.PackageManager; import com.tencent.tauth.Tencent; @@ -42,8 +40,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import de.greenrobot.event.EventBus; - /** * Created by Administrator on 2016/9/19. */ @@ -272,8 +268,6 @@ public abstract class DetailActivity extends BaseActivity implements View.OnClic detail_tv_per.setText("下载中"); break; case done: - EventBus.getDefault().post(new EBPutUrl( - gameEntity.getApk().get(0).getPackageName(), mDownloadEntity.getUrl())); detail_tv_per.setText("安装"); break; case cancel: @@ -340,16 +334,11 @@ public abstract class DetailActivity extends BaseActivity implements View.OnClic final String path = mDownloadEntity.getPath(); PackageManager manager = new PackageManager(getApplicationContext()); if (manager.launchSetup(path)) { - EventBus.getDefault().post(new EBPutUrl( - mDownloadEntity.getPackageName(), mDownloadEntity.getUrl())); startActivity(PackageUtils.getInstallIntent(path)); } else { DialogUtils.showPluginDialog(this, new DialogUtils.ConfiremListener() { @Override public void onConfirem() { - MainActivity.uninstallMap.put( - PackageUtils.getPackageNameByPath( - DetailActivity.this, path), path); startActivity(PackageUtils.getUninstallIntent( DetailActivity.this, path)); } @@ -410,6 +399,7 @@ public abstract class DetailActivity extends BaseActivity implements View.OnClic downloadEntity.setETag(apkEntity.getEtag()); downloadEntity.setIcon(gameEntity.getIcon()); downloadEntity.setPlatform(apkEntity.getPlatform()); + downloadEntity.setPackageName(apkEntity.getPackageName()); downloadEntity.setGameId(gameEntity.getId()); downloadEntity.setEntrance(entrance); downloadEntity.setLocation(name + ":" + title); 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 2e875252a7..958513c810 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -20,11 +20,9 @@ import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.download.DownloadStatus; 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.GameEntity; -import com.gh.gamecenter.eventbus.EBPutUrl; import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.PackageManager; @@ -33,8 +31,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.LinkedBlockingQueue; -import de.greenrobot.event.EventBus; - public class DownloadItemUtils { // 初始化gameMap @@ -484,6 +480,7 @@ public class DownloadItemUtils { MD5Utils.getContentMD5( gameEntity.getName() + "_" + System.currentTimeMillis()) + ".apk")); downloadEntity.setPlatform(apkEntity.getPlatform()); + downloadEntity.setPackageName(apkEntity.getPackageName()); downloadEntity.setIcon(gameEntity.getIcon()); downloadEntity.setUpdate(true); downloadEntity.setETag(apkEntity.getEtag()); @@ -631,14 +628,11 @@ public class DownloadItemUtils { } else { PackageManager manager = new PackageManager(context); if (manager.launchSetup(path)) { - EventBus.getDefault().post(new EBPutUrl(downloadEntity.getPackageName(), downloadEntity.getUrl())); context.startActivity(PackageUtils.getInstallIntent(path)); } else { DialogUtils.showPluginDialog(context, new DialogUtils.ConfiremListener() { @Override public void onConfirem() { - MainActivity.uninstallMap.put( - PackageUtils.getPackageNameByPath(context, path), path); context.startActivity(PackageUtils.getUninstallIntent(context, path)); } }); @@ -661,6 +655,7 @@ public class DownloadItemUtils { downloadEntity.setIcon(gameEntity.getIcon()); downloadEntity.setETag(apkEntity.getEtag()); downloadEntity.setPlatform(apkEntity.getPlatform()); + downloadEntity.setPackageName(apkEntity.getPackageName()); downloadEntity.setGameId(gameEntity.getId()); downloadEntity.setPluggable(gameEntity.isPluggable()); downloadEntity.setEntrance(entrance); 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 77f8915d09..02f58cbde3 100644 --- a/app/src/main/java/com/gh/common/view/DownloadDialog.java +++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java @@ -47,7 +47,6 @@ import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.download.DownloadStatus; 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.GameCollectionEntity; @@ -55,7 +54,6 @@ import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameUpdateEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBPackage; -import com.gh.gamecenter.eventbus.EBPutUrl; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.PackageManager; @@ -653,7 +651,6 @@ public class DownloadDialog { DownloadManager.getInstance(context).cancel(apkEntity.getUrl()); adapter.notifyItemChanged(location); } else { - MainActivity.uninstallMap.put(PackageUtils.getPackageNameByPath(context, path), path); context.startActivity(PackageUtils.getUninstallIntent(context, path)); } } @@ -865,8 +862,6 @@ public class DownloadDialog { || status.equals(DownloadStatus.waiting)) { viewHolder.download_item_tv_status.setText("下载中"); } else if (status.equals(DownloadStatus.done)) { - EventBus.getDefault().post(new EBPutUrl(PackageUtils.getPackageNameByPath( - context, downloadEntity.getPath()), downloadEntity.getUrl())); viewHolder.download_item_tv_status.setText("安装"); } else if (status.equals(DownloadStatus.cancel) || status.equals(DownloadStatus.hijack)) { @@ -975,14 +970,11 @@ public class DownloadDialog { } else { PackageManager manager = new PackageManager(context); if (manager.launchSetup(path)) { - EventBus.getDefault().post(new EBPutUrl(apkEntity.getPackageName(), apkEntity.getUrl())); context.startActivity(PackageUtils.getInstallIntent(path)); } else { DialogUtils.showPluginDialog(context, new DialogUtils.ConfiremListener() { @Override public void onConfirem() { - MainActivity.uninstallMap.put( - PackageUtils.getPackageNameByPath(context, path), path); context.startActivity(PackageUtils.getUninstallIntent(context, path)); } }); @@ -1006,6 +998,7 @@ public class DownloadDialog { downloadEntity.setETag(apkEntity.getEtag()); downloadEntity.setIcon(gameIcon); downloadEntity.setPlatform(apkEntity.getPlatform()); + downloadEntity.setPackageName(apkEntity.getPackageName()); downloadEntity.setUpdate(true); DownloadManager.getInstance(context).add(downloadEntity); } @@ -1165,6 +1158,7 @@ public class DownloadDialog { downloadEntity.setETag(apkEntity.getEtag()); downloadEntity.setIcon(gameIcon); downloadEntity.setPlatform(apkEntity.getPlatform()); + downloadEntity.setPackageName(apkEntity.getPackageName()); downloadEntity.setGameId(gameId); HashMap meta = new HashMap<>(); meta.put("entrance", entrance); diff --git a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java index 4d2cfdcf00..a0216d53be 100644 --- a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java @@ -120,6 +120,10 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { concernInfo.setId(gameEntity.getId()); concernAdapter.getConcernList().add(concernInfo); concernAdapter.getConcernGameList().add(gameEntity); + if (reuse_none_data.getVisibility() == View.VISIBLE) { + reuse_none_data.setVisibility(View.GONE); + concern_rv_show.setVisibility(View.VISIBLE); + } concernAdapter.notifyDataSetChanged(); } } @@ -127,6 +131,18 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { if (changed.getGameId().equals(concernRecommendAdapter.getRecommendGameList().get(i).getId())) { concernRecommendAdapter.getRecommendGameList().remove(i); concernRecommendAdapter.notifyDataSetChanged(); + if (concernRecommendAdapter.getRecommendGameList().isEmpty()) { + concern_rl_title.setVisibility(View.GONE); + concern_rv_recommend.setVisibility(View.GONE); + } + if (concernRecommendAdapter.getRecommendGameList().size() < 4) { + concern_rv_recommend.setLayoutManager(new GridLayoutManager( + ConcernActivity.this, concernRecommendAdapter.getRecommendGameList().size())); + } else { + concern_rv_recommend.setLayoutManager(new GridLayoutManager( + ConcernActivity.this, 4)); + } + break; } } } else { @@ -137,6 +153,20 @@ public class ConcernActivity extends BaseActivity implements OnClickListener { } } concernRecommendAdapter.notifyDataSetChanged(); + if (concernRecommendAdapter.getRecommendGameList().isEmpty()) { + concern_rl_title.setVisibility(View.GONE); + concern_rv_recommend.setVisibility(View.GONE); + } else { + concern_rl_title.setVisibility(View.VISIBLE); + concern_rv_recommend.setVisibility(View.VISIBLE); + } + if (concernRecommendAdapter.getRecommendGameList().size() < 4) { + concern_rv_recommend.setLayoutManager(new GridLayoutManager( + ConcernActivity.this, concernRecommendAdapter.getRecommendGameList().size())); + } else { + concern_rv_recommend.setLayoutManager(new GridLayoutManager( + ConcernActivity.this, 4)); + } } } diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 0320430db2..ddfb6872f9 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -17,7 +17,6 @@ import android.provider.Settings; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.support.v4.app.NotificationCompat; -import android.support.v4.util.ArrayMap; import android.text.Html; import android.text.Spanned; import android.text.TextUtils; @@ -68,7 +67,6 @@ import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameUpdateEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBPackage; -import com.gh.gamecenter.eventbus.EBPutUrl; import com.gh.gamecenter.eventbus.EBShowDialog; import com.gh.gamecenter.eventbus.EBSkip; import com.gh.gamecenter.eventbus.EBTopStatus; @@ -121,7 +119,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene public static final String TAG = MainActivity.class.getSimpleName(); - public static ArrayMap uninstallMap; public static String searchHint; private GameFragment gameFragment; @@ -134,8 +131,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene private SharedPreferences sp; private ConcernManager concernManager; - private ArrayMap entryMap; - private int currentTab; private boolean isDestroy = false; @@ -166,7 +161,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene if (DownloadStatus.done.equals(downloadEntity.getStatus())) { if (downloadEntity.getName().contains("光环助手")) { DataUtils.onEvent(MainActivity.this, "软件更新", "下载完成"); - entryMap.put(downloadEntity.getPackageName(), downloadEntity.getUrl()); startActivity(PackageUtils.getInstallIntent(downloadEntity.getPath())); if (appEntity != null && appEntity.isIs_force()) { finish(); @@ -216,11 +210,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene map.put("network", NetworkUtils.getConnectedType(MainActivity.this)); DataCollectionManager.onEvent(MainActivity.this, "download", map); - entryMap.put(PackageUtils.getPackageNameByPath( - getApplicationContext(), - downloadEntity.getPath()), downloadEntity - .getUrl()); - if (RunningUtils.isApplicationBroughtToBackground(getApplicationContext())) { if (downloadEntity.isPluggable()) { NotificationManager nManager = (NotificationManager) getSystemService( @@ -253,9 +242,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene nManager.notify( ((int) System.currentTimeMillis() / 1000), notification); - - uninstallMap.put(PackageUtils.getPackageNameByPath( - getApplicationContext(), path), path); } } else { String platform = PlatformUtils.getInstance( @@ -283,7 +269,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene PackageManager manager = new PackageManager( getApplicationContext()); if (manager.launchSetup(downloadEntity.getPath())) { - entryMap.put(downloadEntity.getPackageName(), downloadEntity.getUrl()); startActivity(PackageUtils.getInstallIntent(downloadEntity.getPath())); } else { // 记录自动弹出卸载框 @@ -300,10 +285,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene // 统计下载完成 uploadData(downloadEntity.getGameId(), downloadEntity.getPlatform()); } - } else { - Utils.log("It is already done!"); - DataUtils.onEvent(MainActivity.this, "多次弹框数据", - downloadEntity.getName() + "-" + downloadEntity.getPlatform()); } } }; @@ -415,9 +396,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene initViews(); setTabSelection(currentTab); - uninstallMap = new ArrayMap<>(); - entryMap = new ArrayMap<>(); - getSearchHints(); sp = getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE); @@ -1280,6 +1258,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene downloadEntity.setName("光环助手V" + appEntity.getVersion()); downloadEntity.setPath(path); downloadEntity.setPlatform("官方版"); + downloadEntity.setPackageName(getPackageName()); DownloadManager.getInstance(getApplicationContext()).cancel( downloadEntity.getUrl(), false); @@ -1491,12 +1470,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } } - public void onEventMainThread(EBPutUrl url) { - entryMap.put(url.getPackageName(), url.getUrl()); - } - public void onEventMainThread(EBPackage busFour) { - String packageName = busFour.getPackageName(); // 添加进已安装map中 if ("安装".equals(busFour.getType())) { @@ -1504,45 +1478,31 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene } else if ("卸载".equals(busFour.getType())) { PackageManager.removeInstalled(packageName); } - if ("安装".equals(busFour.getType())) { - String url = entryMap.get(packageName); - if (url != null) { - entryMap.remove(packageName); - - DownloadEntity downloadEntity = DownloadManager.getInstance( - getApplicationContext()).get(url); - if (downloadEntity != null && downloadEntity.isPluggable()) { + DownloadEntity mDownloadEntity = null; + for (DownloadEntity downloadEntity : DownloadManager.getInstance( + getApplicationContext()).getAll()) { + if (packageName.equals(downloadEntity.getPackageName())) { + mDownloadEntity = downloadEntity; + break; + } + } + if (mDownloadEntity != null) { + if ("安装".equals(busFour.getType())) { + if (mDownloadEntity.isPluggable()) { Map kv6 = new HashMap<>(); kv6.put("安装或卸载", "安装完成"); - DataUtils.onEvent(this, "插件化", downloadEntity.getName(), kv6); + DataUtils.onEvent(this, "插件化", mDownloadEntity.getName(), kv6); } // 删除数据库和文件 DownloadManager.getInstance(getApplicationContext()).cancel( - url, sp.getBoolean("autodelete", true)); - } - } else if ("卸载".equals(busFour.getType())) { - try { - for (DownloadEntity downloadEntity : DownloadManager.getInstance( - getApplicationContext()).getAll()) { - if (downloadEntity.isPluggable() - && packageName.equals(downloadEntity.getPackageName())) { - Map kv6 = new HashMap<>(); - kv6.put("安装或卸载", "卸载完成"); - DataUtils.onEvent(this, "插件化", downloadEntity.getName(), kv6); - break; - } - } - } catch (Exception e) { - e.printStackTrace(); - } + mDownloadEntity.getUrl(), sp.getBoolean("autodelete", true)); + } else if ("卸载".equals(busFour.getType())) { + Map kv6 = new HashMap<>(); + kv6.put("安装或卸载", "卸载完成"); + DataUtils.onEvent(this, "插件化", mDownloadEntity.getName(), kv6); - String path = uninstallMap.get(packageName); - - if (path != null) { - uninstallMap.remove(packageName); - - startActivity(PackageUtils.getInstallIntent(path)); + startActivity(PackageUtils.getInstallIntent(mDownloadEntity.getPath())); } } if ("安装".equals(busFour.getType())) { @@ -1655,7 +1615,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene home2Title = null; home3Title = null; sp = null; - entryMap = null; dialog = null; app_pb_progress = null; app_tv_speed = null; diff --git a/app/src/main/java/com/gh/gamecenter/SettingActivity.java b/app/src/main/java/com/gh/gamecenter/SettingActivity.java index d3fe007cc6..85a22b261f 100644 --- a/app/src/main/java/com/gh/gamecenter/SettingActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SettingActivity.java @@ -536,6 +536,7 @@ public class SettingActivity extends BaseActivity implements OnClickListener { downloadEntity.setName("光环助手V" + appEntity.getVersion()); downloadEntity.setPath(path); downloadEntity.setPlatform("官方版"); + downloadEntity.setPackageName(getPackageName()); DownloadManager.getInstance(getApplicationContext()).cancel( downloadEntity.getUrl(), false); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java index 587e7aaf41..9aa49362d4 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ConcernAdapter.java @@ -208,10 +208,16 @@ public class ConcernAdapter extends RecyclerView.Adapter { } public List getConcernGameList() { + if (concernGameList == null) { + concernGameList = new ArrayList<>(); + } return concernGameList; } public List getConcernList() { + if (concernList == null) { + concernList = new ArrayList<>(); + } return concernList; } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java index ff1c4cba37..5118127266 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ConcernRecommendAdapter.java @@ -118,7 +118,8 @@ public class ConcernRecommendAdapter extends RecyclerView.Adapter getRecommendGameList() { + if (recommendGameList == null) { + recommendGameList = new ArrayList<>(); + } return recommendGameList; } diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java b/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java index d3063512d3..ee327cd407 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownLoadFragment.java @@ -327,6 +327,8 @@ public class GameDownLoadFragment extends Fragment implements View.OnClickListen if (adapter.getDownloadingList().isEmpty() && adapter.getDoneList().isEmpty()) { reuse_nodata_skip.setVisibility(View.VISIBLE); + } else { + reuse_nodata_skip.setVisibility(View.GONE); } } diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadAdapter.java index ae11d5670e..85b021a842 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadAdapter.java @@ -28,10 +28,8 @@ import com.gh.common.view.CardRelativeLayout; import com.gh.download.DownloadEntity; import com.gh.download.DownloadManager; import com.gh.download.DownloadStatus; -import com.gh.gamecenter.MainActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBDownloadChanged; -import com.gh.gamecenter.eventbus.EBPutUrl; import com.gh.gamecenter.manager.PackageManager; import java.util.ArrayList; @@ -300,18 +298,15 @@ public class GameDownloadAdapter extends RecyclerView.Adapter() { @Override public void onResponse(JSONObject response) { - Gson gson = new Gson(); gameDetailEntity = gson.fromJson(response.toString(), GameDetailEntity.class); - initPosition(); - notifyItemRangeInserted(0, getItemCount()); getGameNews(); @@ -144,10 +142,7 @@ public class GameDetailAdapter extends RecyclerView.Adapter { listener.loadDone(); } initPosition(); - if (position_news != -1) { -// notifyItemInserted(position_news); - notifyDataSetChanged(); - } + notifyDataSetChanged(); } }, new Response.ErrorListener() { @Override @@ -155,6 +150,8 @@ public class GameDetailAdapter extends RecyclerView.Adapter { if (listener != null) { listener.loadDone(); } + initPosition(); + notifyDataSetChanged(); } }); AppController.addToRequestQueue(request, GameDetailActivity.TAG); @@ -167,80 +164,79 @@ public class GameDetailAdapter extends RecyclerView.Adapter { new Response.Listener() { @Override public void onResponse(JSONArray response) { - try { - ArrayList serverInfo = new ArrayList<>(); - SimpleDateFormat format = new SimpleDateFormat( - "Mdd", Locale.getDefault()); - int today = Integer.valueOf(format.format(new Date())); - for (int j = 0, sizej = response.length(); j < sizej; j++) { - ServerEntity entity = new ServerEntity(); - JSONObject jsonObject2; - jsonObject2 = response.getJSONObject(j); - String server = jsonObject2.getString("server"); - if (server.length() > 4) { - server = server.substring(0, 4); + if (response.length() != 0) { + try { + ArrayList serverInfo = new ArrayList<>(); + SimpleDateFormat format = new SimpleDateFormat( + "Mdd", Locale.getDefault()); + int today = Integer.valueOf(format.format(new Date())); + for (int j = 0, sizej = response.length(); j < sizej; j++) { + ServerEntity entity = new ServerEntity(); + JSONObject jsonObject2; + jsonObject2 = response.getJSONObject(j); + String server = jsonObject2.getString("server"); + if (server.length() > 4) { + server = server.substring(0, 4); + } + entity.setServer(server); + entity.setTime(Long.valueOf(jsonObject2.getString("time") + "000")); + int day = Integer.valueOf(format.format(new Date(entity.getTime()))); + if (day == today + 1) { + entity.setTag("明天"); + serverInfo.add(entity); + } else if (day == today - 1) { + entity.setTag("昨天"); + serverInfo.add(entity); + } else if (day == today) { + entity.setTag("今天"); + serverInfo.add(entity); + } } - entity.setServer(server); - entity.setTime(Long.valueOf(jsonObject2.getString("time") + "000")); - int day = Integer.valueOf(format.format(new Date(entity.getTime()))); - if (day == today + 1) { - entity.setTag("明天"); - serverInfo.add(entity); - } else if (day == today - 1) { - entity.setTag("昨天"); - serverInfo.add(entity); - } else if (day == today) { - entity.setTag("今天"); - serverInfo.add(entity); + + Comparator comparator = new Comparator() { + @Override + public int compare(ServerEntity lhs, ServerEntity rhs) { + return (int) (lhs.getTime() - rhs.getTime()); + } + }; + Collections.sort(serverInfo, comparator); + + gameDetailEntity.setServerInfo(serverInfo); + initPosition(); + if (position_newsserver != -1) { + notifyItemInserted(position_newsserver); } + } catch (JSONException e) { + e.printStackTrace(); } - - Comparator comparator = new Comparator() { - @Override - public int compare(ServerEntity lhs, ServerEntity rhs) { - return (int) (lhs.getTime() - rhs.getTime()); - } - }; - Collections.sort(serverInfo, comparator); - - gameDetailEntity.setServerInfo(serverInfo); - initPosition(); - notifyDataSetChanged(); - } catch (JSONException e) { - e.printStackTrace(); } } - }, new Response.ErrorListener() { - @Override - public void onErrorResponse(VolleyError error) { - - } - }); + }, null); AppController.addToRequestQueue(request, GameDetailActivity.TAG); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - if (viewType == 0) { + if (viewType == 1) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.gamedetail_item_top, parent, false); return new GameDetailTopViewHolder(view); - } else if (viewType == 1) { - View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.gamedetail_item_plugin, parent, false); - return new GameDetailPluginViewHolder(view); } else if (viewType == 2) { - View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.gamedetail_item_news, parent, false); - return new GameDetailNewsViewHolder(view); - } else if (viewType == 3) { - View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.gamedetail_item_intro,parent,false); - return new GameDetailIntroViewHolder(view); - } else if (viewType == 4) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.gamedetail_item_newsserver,parent,false); return new GameDetailNewsServerViewHolder(view); + } else if (viewType == 3) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.gamedetail_item_plugin, parent, false); + return new GameDetailPluginViewHolder(view); + } else if (viewType == 4) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.gamedetail_item_news, parent, false); + return new GameDetailNewsViewHolder(view); + } else if (viewType == 5) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.gamedetail_item_intro,parent,false); + return new GameDetailIntroViewHolder(view); } return null; } @@ -677,12 +673,15 @@ public class GameDetailAdapter extends RecyclerView.Adapter { } private void initPosition() { + if (gameDetailEntity != null) { + position_top = 0; + } if (gameDetailEntity.getServerInfo() != null && gameDetailEntity.getServerInfo().size() != 0) { position_newsserver = 1; } if (gameDetailEntity.getTag() != null - && gameDetailEntity.getTag().size() > 0) { + && gameDetailEntity.getTag().size() != 0) { if (position_newsserver == -1) { position_plugin = 1; } else { @@ -690,7 +689,7 @@ public class GameDetailAdapter extends RecyclerView.Adapter { } } if (gameDetailEntity.getNews() != null - && gameDetailEntity.getNews().size() > 0) { + && gameDetailEntity.getNews().size() != 0) { if (position_newsserver == -1 && position_plugin == -1) { position_news = 1; } else if (position_plugin != -1) { @@ -702,7 +701,7 @@ public class GameDetailAdapter extends RecyclerView.Adapter { } } if (gameDetailEntity.getGallery() != null - && gameDetailEntity.getGallery().size() > 0) { + && gameDetailEntity.getGallery().size() != 0) { if (position_newsserver == -1 && position_plugin == -1 && position_news == -1) { position_intro = 1; } else if (position_news != -1) { @@ -722,21 +721,20 @@ public class GameDetailAdapter extends RecyclerView.Adapter { if (gameDetailEntity == null) { return 0; } else { - int index = 1; - if (gameDetailEntity.getServerInfo() != null - && gameDetailEntity.getServerInfo().size() != 0) { + int index = 0; + if (position_top != -1) { index++; } - if (gameDetailEntity.getTag() != null - && gameDetailEntity.getTag().size() > 0) { + if (position_newsserver != -1) { index++; } - if (gameDetailEntity.getNews() != null - && gameDetailEntity.getNews().size() > 0) { + if (position_plugin != -1) { index++; } - if (gameDetailEntity.getGallery() != null - && gameDetailEntity.getGallery().size() > 0) { + if (position_news != -1) { + index++; + } + if (position_intro != -1) { index++; } return index; @@ -745,18 +743,21 @@ public class GameDetailAdapter extends RecyclerView.Adapter { @Override public int getItemViewType(int position) { - if (position_newsserver != -1 && position == position_newsserver) { - return 4; - } - if (position_plugin != -1 && position == position_plugin) { + if (position_top != -1 && position == position_top) { return 1; } - if (position_news != -1 && position == position_news) { + if (position_newsserver != -1 && position == position_newsserver) { return 2; } - if (position_intro != -1 && position == position_intro) { + if (position_plugin != -1 && position == position_plugin) { return 3; } + if (position_news != -1 && position == position_news) { + return 4; + } + if (position_intro != -1 && position == position_intro) { + return 5; + } return position; } 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 eca8bf6b85..2dc8ea653b 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragment.java @@ -26,7 +26,6 @@ public class ConcernFragment extends BaseFragment { public static final String TAG = ConcernFragment.class.getSimpleName(); private RecyclerView fm_concern_rv_show; - private LinearLayoutManager linearLayoutManager; private ConcernFragmentAdapter adapter; private boolean isEverpause; @@ -54,8 +53,7 @@ public class ConcernFragment extends BaseFragment { init(R.layout.fm_concern); fm_concern_rv_show.setHasFixedSize(true); - linearLayoutManager = new LinearLayoutManager(getActivity()); - fm_concern_rv_show.setLayoutManager(linearLayoutManager); + fm_concern_rv_show.setLayoutManager(new LinearLayoutManager(getActivity())); adapter = new ConcernFragmentAdapter(getActivity(), fm_concern_rv_show); fm_concern_rv_show.setAdapter(adapter); } diff --git a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java index d79083f8a8..7158a411fa 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java @@ -3,12 +3,10 @@ package com.gh.gamecenter.personal; import android.content.Context; import android.content.Intent; import android.support.v4.util.ArrayMap; -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 android.widget.RelativeLayout; import com.android.volley.Response; import com.android.volley.VolleyError; @@ -21,7 +19,6 @@ import com.gh.common.util.DownloadItemUtils; import com.gh.common.util.GameViewUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.TimestampUtils; -import com.gh.common.util.Utils; import com.gh.common.view.CardLinearLayout; import com.gh.download.DownloadManager; import com.gh.gamecenter.GameDetailActivity; @@ -29,7 +26,6 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; import com.gh.gamecenter.adapter.viewholder.NoDataSkipViewHolder; -import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder; import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; @@ -151,9 +147,8 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter 0 && viewType >= 0 && viewType < gameList.size()) { + if (viewType == 1) { View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.game_normal_item, parent, false); return new GameNormalViewHolder(view); @@ -179,12 +174,6 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter position) { initGameNormal((GameNormalViewHolder) holder, gameList.get(position), position); - } else if (holder instanceof ReuseViewHolder && position == getItemCount() - 1) { -// ReuseViewHolder viewHolder = (ReuseViewHolder) holder; -// -// int height = 0; -// LinearLayoutManager linearLayoutManager = (LinearLayoutManager) fm_concern_rv_show.getLayoutManager(); -// if (linearLayoutManager.findFirstVisibleItemPosition() < 1) { -// for (int i = 0, size = fm_concern_rv_show.getChildCount(); i < size; i++) { -// height += fm_concern_rv_show.getChildAt(i).getMeasuredHeight(); -// } -// height = fm_concern_rv_show.getHeight() + DisplayUtils.dip2px(context, 229) -// - DisplayUtils.getInternalDimensionSize(context.getResources(), "status_bar_height") - height; -// if (height < 0) { -// height = 0; -// } -// Utils.log("height = " + height); -// } -// -// ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( -// ViewGroup.LayoutParams.MATCH_PARENT, height); -// viewHolder.itemView.setLayoutParams(params); } else if (holder instanceof NoDataSkipViewHolder) { NoDataSkipViewHolder viewHolder = (NoDataSkipViewHolder) holder; - int height = 0; - LinearLayoutManager linearLayoutManager = (LinearLayoutManager) fm_concern_rv_show.getLayoutManager(); - if (linearLayoutManager.findFirstVisibleItemPosition() < 1) { - for (int i = 0, size = fm_concern_rv_show.getChildCount(); i < size; i++) { - height += fm_concern_rv_show.getChildAt(i).getMeasuredHeight(); - } - height = fm_concern_rv_show.getHeight() - - DisplayUtils.getInternalDimensionSize(context.getResources(), "status_bar_height") - height; - if (height < 0) { - height = 0; - } - Utils.log("height = " + height); - } - - ViewGroup.LayoutParams params = viewHolder.itemView.getLayoutParams(); - params.height = height; - viewHolder.itemView.setLayoutParams(params); - viewHolder.reuse_nodata_skip_tv_hint.setText("暂无关注"); viewHolder.reuse_nodata_skip_tv_btn.setText("查看精品推荐"); viewHolder.reuse_nodata_skip_tv_btn.setOnClickListener(new View.OnClickListener() { @@ -250,12 +201,21 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter= 0 && position < gameList.size()) { + return 1; + } + return 0; } private void initGameNormal(final GameNormalViewHolder holder, final GameEntity gameEntity, int i) { 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 5aa252c624..8532a6b8b5 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/InstallFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/InstallFragment.java @@ -25,7 +25,6 @@ public class InstallFragment extends BaseFragment { public static final String TAG = InstallFragment.class.getSimpleName(); private RecyclerView fm_install_rv_show; - private LinearLayoutManager linearLayoutManager; private InstallFragmentAdapter adapter; private boolean isEverpause; @@ -55,8 +54,7 @@ public class InstallFragment extends BaseFragment { init(R.layout.fm_install); fm_install_rv_show.setHasFixedSize(true); - linearLayoutManager = new LinearLayoutManager(getActivity()); - fm_install_rv_show.setLayoutManager(linearLayoutManager); + fm_install_rv_show.setLayoutManager(new LinearLayoutManager(getActivity())); adapter = new InstallFragmentAdapter(getActivity(), fm_install_rv_show); fm_install_rv_show.setAdapter(adapter); } diff --git a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java index b8b214b702..3972b95e62 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java @@ -3,12 +3,10 @@ package com.gh.gamecenter.personal; import android.content.Context; import android.content.Intent; import android.support.v4.util.ArrayMap; -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 android.widget.RelativeLayout; import com.android.volley.Response; import com.android.volley.VolleyError; @@ -23,7 +21,6 @@ import com.gh.common.util.ImageUtils; import com.gh.common.util.PlatformUtils; import com.gh.common.util.TimestampUtils; import com.gh.common.util.TrafficUtils; -import com.gh.common.util.Utils; import com.gh.common.view.CardLinearLayout; import com.gh.download.DownloadManager; import com.gh.gamecenter.GameDetailActivity; @@ -31,7 +28,6 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; import com.gh.gamecenter.adapter.viewholder.NoDataSkipViewHolder; -import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder; import com.gh.gamecenter.db.info.ConcernInfo; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; @@ -195,8 +191,6 @@ public class InstallFragmentAdapter extends RecyclerView.Adapter= 0 && position < gameList.size()) { + return 1; + } + return 0; } private void initGameNormal(final GameNormalViewHolder holder, final GameEntity gameEntity, int i) {