package com.edufound.reader.presenter; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.widget.FrameLayout; import android.widget.GridLayout; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.edufound.reader.R; import com.edufound.reader.activity.SmallFullVideoActivity; import com.edufound.reader.base.BaseActivity; import com.edufound.reader.base.BasePresenter; import com.edufound.reader.bean.HttpResultBean; import com.edufound.reader.bean.HttpResultDataListBean; import com.edufound.reader.bean.UserRecordBean; import com.edufound.reader.contract.CharacterFragmentContract; import com.edufound.reader.model.CharacterFragmentModel; import com.edufound.reader.util.EfunboxUtil; import com.edufound.reader.util.GlideUtils; import com.edufound.reader.util.MMKVUtil; import com.edufound.reader.util.OkHttpClient; import com.edufound.reader.util.SizeUtils; import com.google.gson.reflect.TypeToken; import com.okhttplib.HttpInfo; import com.okhttplib.callback.Callback; import com.orhanobut.logger.Logger; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class CharacterFragmentPresenter extends BasePresenter implements CharacterFragmentContract.Presenter { Context mContext; CharacterFragmentModel mModel; List mDataList; int mListStart = 0; int mListEnd = 6; public CharacterFragmentPresenter(Context context) { mModel = new CharacterFragmentModel(); mContext = context; // mDataList = new ArrayList<>(); // for (int i = 0; i < 100; i++) { // mDataList.add("i=" + i); // } } @Override public void initGridLayout(GridLayout gridLayout) { if (mDataList == null || mDataList.size() <= 0) { return; } gridLayout.setRowCount(2); int timeCount = 0; for (int j = mListStart; j < mListEnd; j++) { timeCount++; Message message = new Message(); message.obj = gridLayout; message.what = CharacterFragmentModel.LOAD_GRID; message.arg1 = j; mCharacterHandler.sendMessageDelayed(message, 50 * timeCount); } mListStart = mListEnd; if (mListEnd + 6 > mDataList.size()) { mListEnd = mDataList.size(); } else { mListEnd = mListEnd + 6; } } @Override public void onDestory(GridLayout layout) { if (mCharacterHandler != null) { mCharacterHandler.removeMessages(CharacterFragmentModel.LOAD_GRID); mCharacterHandler = null; } layout.removeAllViews(); layout = null; mView = null; } @Override public void getExampleAll() { mModel.getExampleAll(mView.getActivity(), new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { HttpResultBean> bean = info.getRetDetail(new TypeToken>>() { }.getType()); mDataList = bean.getData().getList(); mView.getExampleAllSuccess(); } @Override public void onFailure(HttpInfo info) throws IOException { } }); } private void setGridItemView(GridLayout gridLayout, int index) { if (mView == null) { return; } View view = LayoutInflater.from(mContext).inflate(R.layout.adapter_item_record_authority, null); ImageView imgIcon = view.findViewById(R.id.adapter_item_record_authority_icon); TextView name = view.findViewById(R.id.adapter_item_record_authority_name); TextView allcount = view.findViewById(R.id.adapter_item_record_authority_allcount_num); TextView looknum = view.findViewById(R.id.adapter_item_record_authority_look_num); TextView thumbnum = view.findViewById(R.id.adapter_item_record_authority_thumb_num); TextView startnum = view.findViewById(R.id.adapter_item_record_authority_start_num); // GlideUtils.loadRoundCircleImage(mContext, mDataList.get(index).getUserRead().getCoverImg(), imgIcon, SizeUtils.dp2px(mContext, 20)); GlideUtils.loadImage(mContext, mDataList.get(index).getUserRead().getCoverImg(), imgIcon); name.setText(mDataList.get(index).getUserRead().getTitle()); allcount.setText(EfunboxUtil.checkNum10000(mDataList.get(index).getUserRead().getReadAmount())); looknum.setText(EfunboxUtil.checkNum10000(mDataList.get(index).getUserRead().getPlayAmount())); thumbnum.setText(EfunboxUtil.checkNum10000(mDataList.get(index).getUserRead().getLikeAmount())); startnum.setText(EfunboxUtil.checkNum10000(mDataList.get(index).getUserRead().getFavoritesAmount())); mView.addUiClick(view, o -> { Bundle bundle = new Bundle(); bundle.putString("index", index + ""); bundle.putString("dataJson", "getmmkv"); bundle.putString("intoPage", "Character"); //数据太多了。直接传不过去,通过MMKV写一下再读一下 MMKVUtil.getInstance().encode("video_data", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList)); ((BaseActivity) mView.getActivity()).toNextActivity(SmallFullVideoActivity.class, bundle); }); GridLayout.LayoutParams params = new GridLayout.LayoutParams(new FrameLayout.LayoutParams(SizeUtils.dp2px(mContext, 415), SizeUtils.dp2px(mContext, 290))); params.setMargins(SizeUtils.dp2px(mContext, 10), 0, SizeUtils.dp2px(mContext, 20), SizeUtils.dp2px(mContext, 20)); view.setLayoutParams(params); gridLayout.addView(view); } Handler mCharacterHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { switch (msg.what) { case CharacterFragmentModel.LOAD_GRID: setGridItemView((GridLayout) msg.obj, msg.arg1); break; default: throw new IllegalStateException("Unexpected value: " + msg.what); } return false; } }); }