CharacterFragmentPresenter.java 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package com.edufound.reader.presenter;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.os.Handler;
  7. import android.os.Message;
  8. import android.view.LayoutInflater;
  9. import android.view.MotionEvent;
  10. import android.view.View;
  11. import android.widget.FrameLayout;
  12. import android.widget.GridLayout;
  13. import android.widget.ImageView;
  14. import android.widget.TextView;
  15. import android.widget.Toast;
  16. import com.edufound.reader.R;
  17. import com.edufound.reader.activity.SmallFullVideoActivity;
  18. import com.edufound.reader.base.BaseActivity;
  19. import com.edufound.reader.base.BasePresenter;
  20. import com.edufound.reader.bean.HttpResultBean;
  21. import com.edufound.reader.bean.HttpResultDataListBean;
  22. import com.edufound.reader.bean.UserRecordBean;
  23. import com.edufound.reader.contract.CharacterFragmentContract;
  24. import com.edufound.reader.model.CharacterFragmentModel;
  25. import com.edufound.reader.util.EfunboxUtil;
  26. import com.edufound.reader.util.GlideUtils;
  27. import com.edufound.reader.util.MMKVUtil;
  28. import com.edufound.reader.util.OkHttpClient;
  29. import com.edufound.reader.util.SizeUtils;
  30. import com.google.gson.reflect.TypeToken;
  31. import com.okhttplib.HttpInfo;
  32. import com.okhttplib.callback.Callback;
  33. import com.orhanobut.logger.Logger;
  34. import java.io.IOException;
  35. import java.util.ArrayList;
  36. import java.util.List;
  37. public class CharacterFragmentPresenter extends BasePresenter<CharacterFragmentContract.View> implements CharacterFragmentContract.Presenter {
  38. Context mContext;
  39. CharacterFragmentModel mModel;
  40. List<UserRecordBean> mDataList;
  41. int mListStart = 0;
  42. int mListEnd = 6;
  43. public CharacterFragmentPresenter(Context context) {
  44. mModel = new CharacterFragmentModel();
  45. mContext = context;
  46. // mDataList = new ArrayList<>();
  47. // for (int i = 0; i < 100; i++) {
  48. // mDataList.add("i=" + i);
  49. // }
  50. }
  51. @Override
  52. public void initGridLayout(GridLayout gridLayout) {
  53. if (mDataList == null || mDataList.size() <= 0) {
  54. return;
  55. }
  56. gridLayout.setRowCount(2);
  57. int timeCount = 0;
  58. for (int j = mListStart; j < mListEnd; j++) {
  59. timeCount++;
  60. Message message = new Message();
  61. message.obj = gridLayout;
  62. message.what = CharacterFragmentModel.LOAD_GRID;
  63. message.arg1 = j;
  64. mCharacterHandler.sendMessageDelayed(message, 50 * timeCount);
  65. }
  66. mListStart = mListEnd;
  67. if (mListEnd + 6 > mDataList.size()) {
  68. mListEnd = mDataList.size();
  69. } else {
  70. mListEnd = mListEnd + 6;
  71. }
  72. }
  73. @Override
  74. public void onDestory(GridLayout layout) {
  75. if (mCharacterHandler != null) {
  76. mCharacterHandler.removeMessages(CharacterFragmentModel.LOAD_GRID);
  77. mCharacterHandler = null;
  78. }
  79. layout.removeAllViews();
  80. layout = null;
  81. mView = null;
  82. }
  83. @Override
  84. public void getExampleAll() {
  85. mModel.getExampleAll(mView.getActivity(), new Callback() {
  86. @Override
  87. public void onSuccess(HttpInfo info) throws IOException {
  88. HttpResultBean<HttpResultDataListBean<UserRecordBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<HttpResultDataListBean<UserRecordBean>>>() {
  89. }.getType());
  90. mDataList = bean.getData().getList();
  91. mView.getExampleAllSuccess();
  92. }
  93. @Override
  94. public void onFailure(HttpInfo info) throws IOException {
  95. }
  96. });
  97. }
  98. private void setGridItemView(GridLayout gridLayout, int index) {
  99. if (mView == null) {
  100. return;
  101. }
  102. View view = LayoutInflater.from(mContext).inflate(R.layout.adapter_item_record_authority, null);
  103. ImageView imgIcon = view.findViewById(R.id.adapter_item_record_authority_icon);
  104. TextView name = view.findViewById(R.id.adapter_item_record_authority_name);
  105. TextView allcount = view.findViewById(R.id.adapter_item_record_authority_allcount_num);
  106. TextView looknum = view.findViewById(R.id.adapter_item_record_authority_look_num);
  107. TextView thumbnum = view.findViewById(R.id.adapter_item_record_authority_thumb_num);
  108. TextView startnum = view.findViewById(R.id.adapter_item_record_authority_start_num);
  109. // GlideUtils.loadRoundCircleImage(mContext, mDataList.get(index).getUserRead().getCoverImg(), imgIcon, SizeUtils.dp2px(mContext, 20));
  110. GlideUtils.loadImage(mContext, mDataList.get(index).getUserRead().getCoverImg(), imgIcon);
  111. name.setText(mDataList.get(index).getUserRead().getTitle());
  112. allcount.setText(EfunboxUtil.checkNum10000(mDataList.get(index).getUserRead().getReadAmount()));
  113. looknum.setText(EfunboxUtil.checkNum10000(mDataList.get(index).getUserRead().getPlayAmount()));
  114. thumbnum.setText(EfunboxUtil.checkNum10000(mDataList.get(index).getUserRead().getLikeAmount()));
  115. startnum.setText(EfunboxUtil.checkNum10000(mDataList.get(index).getUserRead().getFavoritesAmount()));
  116. mView.addUiClick(view, o -> {
  117. Bundle bundle = new Bundle();
  118. bundle.putString("index", index + "");
  119. bundle.putString("dataJson", "getmmkv");
  120. bundle.putString("intoPage", "Character");
  121. //数据太多了。直接传不过去,通过MMKV写一下再读一下
  122. MMKVUtil.getInstance().encode("video_data", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
  123. ((BaseActivity) mView.getActivity()).toNextActivity(SmallFullVideoActivity.class, bundle);
  124. });
  125. GridLayout.LayoutParams params = new GridLayout.LayoutParams(new FrameLayout.LayoutParams(SizeUtils.dp2px(mContext, 415), SizeUtils.dp2px(mContext, 290)));
  126. params.setMargins(SizeUtils.dp2px(mContext, 10), 0, SizeUtils.dp2px(mContext, 20), SizeUtils.dp2px(mContext, 20));
  127. view.setLayoutParams(params);
  128. gridLayout.addView(view);
  129. }
  130. Handler mCharacterHandler = new Handler(new Handler.Callback() {
  131. @Override
  132. public boolean handleMessage(Message msg) {
  133. switch (msg.what) {
  134. case CharacterFragmentModel.LOAD_GRID:
  135. setGridItemView((GridLayout) msg.obj, msg.arg1);
  136. break;
  137. default:
  138. throw new IllegalStateException("Unexpected value: " + msg.what);
  139. }
  140. return false;
  141. }
  142. });
  143. }