基线备份: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:
144
app/src/main/java/com/pukka/jiecheng/base/BaseRecyclerAdapter.java
Executable file
144
app/src/main/java/com/pukka/jiecheng/base/BaseRecyclerAdapter.java
Executable 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user