基线备份:thirdparty 变体完成 + Android 4.2 兼容改造前
包含内容: - thirdparty flavor 独立 applicationId + Intent 入口(ThirdPartyEntryActivity) - 58 后端接口适配(单 /api 路径、code 0/200、camelCase 字段、UNBOUND 轮询) - MAC 硬件锚定校验(防一凭证多设备共用) - EPG mac 覆盖 SDK init(sMacOverride)+ ChannelManger 初始化对齐 - 提示文案优化(设备未注册/权益未绑定)
This commit is contained in:
118
app/src/main/java/com/pukka/jiecheng/base/BasePresenter.java
Executable file
118
app/src/main/java/com/pukka/jiecheng/base/BasePresenter.java
Executable file
@@ -0,0 +1,118 @@
|
||||
|
||||
package com.pukka.jiecheng.base;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.leanback.widget.Presenter;
|
||||
|
||||
|
||||
import com.pukka.libcore.utils.LogUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public abstract class BasePresenter<VH extends BasePresenterViewHolder, D> extends Presenter {
|
||||
|
||||
/**
|
||||
* item 点击事件
|
||||
*/
|
||||
protected OnItemClickListener<D> onItemClickListener = null;
|
||||
|
||||
public void setOnItemClickListener(OnItemClickListener<D> onItemClickListener) {
|
||||
this.onItemClickListener = onItemClickListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(ViewGroup viewGroup) {
|
||||
// long time = System.currentTimeMillis();
|
||||
View view;
|
||||
int layoutResId = getLayoutResId();
|
||||
if (layoutResId <= 0) {
|
||||
view = new View(viewGroup.getContext());
|
||||
} else {
|
||||
view = LayoutInflater.from(viewGroup.getContext()).inflate(getLayoutResId(), viewGroup, false);
|
||||
}
|
||||
ViewHolder viewHolder = createViewHolder(view);
|
||||
return viewHolder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ViewHolder viewHolder, Object o) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ViewHolder viewHolder, Object item, List<Object> payloads) {
|
||||
try {
|
||||
((VH) viewHolder).bindViewHolderPayloads(item,payloads);
|
||||
if (onItemClickListener != null) {
|
||||
((VH) viewHolder).view.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
onItemClickListener.onItemClick(viewHolder.view, (D) item);
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (ClassCastException e) {
|
||||
LogUtils.e(getLogTag() + "onBindViewHolder, cast param failed. " +e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewAttachedToWindow(ViewHolder viewHolder) {
|
||||
super.onViewAttachedToWindow(viewHolder);
|
||||
try {
|
||||
((VH) viewHolder).setAttachedToWindow(true);
|
||||
} catch (ClassCastException e) {
|
||||
LogUtils.e(getLogTag() + "onViewAttachedToWindow, cast param failed." + e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewDetachedFromWindow(ViewHolder viewHolder) {
|
||||
super.onViewDetachedFromWindow(viewHolder);
|
||||
try {
|
||||
((VH) viewHolder).setAttachedToWindow(false);
|
||||
} catch (ClassCastException e) {
|
||||
LogUtils.e(getLogTag() + "onViewDetachedFromWindow, cast param failed." + e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUnbindViewHolder(ViewHolder viewHolder) {
|
||||
try {
|
||||
// long time = System.currentTimeMillis();
|
||||
((VH) viewHolder).unBindViewHolder();
|
||||
// Logger.d(getLogTag(), "onUnbindViewHolder. cost: " + (System.currentTimeMillis() - time));
|
||||
} catch (ClassCastException e) {
|
||||
LogUtils.e(getLogTag() + "onUnbindViewHolder, cast param failed." + e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取布局的资源Id
|
||||
*
|
||||
* @return 布局的资源Id
|
||||
*/
|
||||
protected abstract int getLayoutResId();
|
||||
|
||||
/**
|
||||
* 创建一个ViewHolder的实例
|
||||
*
|
||||
* @param view view对象
|
||||
* @return viewHolder的实例
|
||||
*/
|
||||
protected abstract VH createViewHolder(View view);
|
||||
|
||||
/**
|
||||
* 获取日志的TAG
|
||||
*
|
||||
* @return 日志的TAG
|
||||
*/
|
||||
protected abstract String getLogTag();
|
||||
|
||||
public interface OnItemClickListener<D> {
|
||||
void onItemClick(View view, D d);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user