基线备份: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:
zhaogd
2026-08-25 11:16:40 +08:00
commit d11464d466
1287 changed files with 154945 additions and 0 deletions

View File

@@ -0,0 +1,144 @@
package com.pukka.jiecheng.base;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
/**
* @author MajorLL
*/
public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<BaseRecyclerViewHolder<T>> {
/**
* 源数据
*/
protected List<T> mData;
/**
* item 点击事件
*/
protected BaseOnItemClickListener<T> onItemClickListener = null;
/**
* item 焦点变化事件
*/
protected BaseOnItemFocusChangeListener<T> onItemFocusChangeListener = null;
/**
* 获取当前布局资源文件ID
*
* @param viewType viewType类型
* @return 返回资源ID
*/
protected abstract int getLayoutId(int viewType);
/**
* 获取对应ViewHolder
*
* @param view
* @param viewType
* @return
*/
public abstract BaseRecyclerViewHolder<T> getViewHolder(View view, int viewType);
public BaseRecyclerAdapter(@NonNull List<T> mData) {
this.mData = mData;
}
/**
* 获取对应位置泛型数据对象
*
* @param position 位置
* @return 泛型数据
*/
protected T getIndexData(int position) {
if (mData == null || mData.size() <= position) {
return null;
}
return mData.get(position);
}
@NonNull
@Override
public BaseRecyclerViewHolder<T> onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(getLayoutId(viewType), parent, false);
return getViewHolder(view, viewType);
}
@Override
public void onBindViewHolder(@NonNull BaseRecyclerViewHolder<T> holder, int position) {
holder.setData(getIndexData(position));
final int index = position;
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.onItemClick(v, index, getIndexData(index));
if (onItemClickListener != null) {
onItemClickListener.onItemClick(v, index, getIndexData(index));
}
}
});
holder.itemView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
holder.onItemFocusChange(v, hasFocus);
if (onItemFocusChangeListener != null) {
onItemFocusChangeListener.onItemFocusChange(v, hasFocus, index, getIndexData(index));
}
}
});
}
@Override
public int getItemCount() {
if (mData == null) {
return 0;
}
return mData.size();
}
/**
* 获取空页面数量
* @return 空页面数量
*/
public int getEmptyCount() {
if (mData == null) {
return 0;
}
int index = 0;
for (T mDatum : mData) {
if (mDatum == null) {
index++;
}
}
return index;
}
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
/**
* 设置对应得Item点击事件
*
* @param onItemClickListener item点击事件回调
*/
public void setOnItemClickListener(BaseOnItemClickListener<T> onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
/**
* 设置对应item焦点事件
*
* @param onItemFocusChangeListener item焦点事件回调
*/
public void setOnItemFocusChangeListener(BaseOnItemFocusChangeListener<T> onItemFocusChangeListener) {
this.onItemFocusChangeListener = onItemFocusChangeListener;
}
}