我有一个自定义类WORecyclerListAdapter
,它扩展了RecyclerView.Adapter<WORecyclerListAdapter.ViewHolder>
。
我还有另一个自定义类ZWORecyclerListAdapter
,它扩展了WORecyclerListAdapter
5扩展了CCD_ 6。
它们都具有CCD_ 7和CCD_。
下面是WORecyclerListAdapter类:
public abstract class WORecyclerListAdapter extends RecyclerView.Adapter<WORecyclerListAdapter.ViewHolder> {
protected ArrayList<WorkOrder> workorders;
protected int currentSelectedWOPos;
protected View currentSelectedView;
protected boolean mTwoPane;
public WORecyclerListAdapter(){
}
public WORecyclerListAdapter(ArrayList<WorkOrder> items, int selectedWOPos, boolean mTwoPane) {
try{ workorders = items;
this.currentSelectedWOPos = selectedWOPos;
this.mTwoPane = mTwoPane;
}catch(Exception e)
{ DliteLogger.WriteLog(this.getClass(), AppSettings.LogLevel.Error, e.getMessage());}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = null;
try{ view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.workorder_list_content, parent, false);
}catch(Exception e)
{ DliteLogger.WriteLog(this.getClass(), AppSettings.LogLevel.Error,e.getMessage());}
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
try { holder.mItem = workorders.get(position);
holder.mView.setSelected(position == currentSelectedWOPos && mTwoPane);
if(position== currentSelectedWOPos && mTwoPane) {
currentSelectedView = holder.mView;
}
holder.mIdView.setText(workorders.get(position).getDisplayableWorkOrderNum());
holder.mContentView.setText(workorders.get(position).getShortText());
holder.statusIcon.setImageResource(holder.mItem.getMobileObjStatusDrawable());
holder.woTypeIcon.setImageResource(holder.mItem.getWOTypeDrawable());
holder.priorityIcon.setImageResource(holder.mItem.getPriorityDrawable());
if(holder.mItem.getBasicFnshDate() != null)
holder.dueDateTxt.setText(Common.getFormattedDate(holder.mItem.getBasicFnshDate().getTime()));
if(!holder.mItem.isAttachmentAvailable())
holder.attachmentIcon.setVisibility(View.INVISIBLE);
else
holder.attachmentIcon.setVisibility(View.VISIBLE);
if(holder.mItem.isErrorEntity()){
holder.errorIndicator.setVisibility(View.VISIBLE);
}else {
holder.errorIndicator.setVisibility(View.GONE);
}
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int clickPos = holder.getAdapterPosition();
if (clickPos != currentSelectedWOPos && mTwoPane) {
currentSelectedWOPos = clickPos;
if (currentSelectedView != null)
currentSelectedView.setSelected(false);
currentSelectedView = v;
v.setSelected(true);
onSelectWOListItem(clickPos);
}
if(!mTwoPane)
onSelectWOListItem(clickPos);
}
});
}catch(Exception e)
{ DliteLogger.WriteLog(this.getClass(), AppSettings.LogLevel.Error,e.getMessage());}
}
public abstract void onSelectWOListItem(int position);
public void onUnSelectWOListItem(int position){}
@Override
public int getItemCount() {
try{ return workorders.size();
}catch(Exception e)
{ DliteLogger.WriteLog(this.getClass(), AppSettings.LogLevel.Error,e.getMessage());}
return 0;}
public class ViewHolder extends RecyclerView.ViewHolder {
public final View mView;
public final View errorIndicator;
public final TextView mIdView;
public final TextView mContentView;
public final ImageView statusIcon;
public final ImageView priorityIcon;
public final ImageView woTypeIcon;
public final ImageView attachmentIcon;
public final TextView dueDateTxt;
public WorkOrder mItem;
public ViewHolder(View view) {
super(view);
mView = view;
mIdView = (TextView) view.findViewById(R.id.id);
mContentView = (TextView) view.findViewById(R.id.short_text);
statusIcon = (ImageView) view.findViewById(R.id.status_icon);
priorityIcon = (ImageView) view.findViewById(R.id.wo_priority_icon);
woTypeIcon = (ImageView) view.findViewById(R.id.type_icon);
attachmentIcon = (ImageView) view.findViewById(R.id.attach_icon);
dueDateTxt = (TextView) view.findViewById(R.id.dueDateTxt);
errorIndicator = view.findViewById(R.id.errorIndicator);
}
@Override
public String toString() {
try{
return super.toString() + " '" + mContentView.getText() + "'";
}catch(Exception e)
{ DliteLogger.WriteLog(this.getClass(), AppSettings.LogLevel.Error,e.getMessage());}
return "";
}
}
}
下面是扩展WORecyclerListAdapter
的ZWORecyclerListAdapter类
public class ZWORecyclerListAdapter extends WORecyclerListAdapter{
public ZWORecyclerListAdapter(){
super();
}
public ZWORecyclerListAdapter(ArrayList<WorkOrder> items, int selectedWOPos, boolean mTwoPane) {
super();
try{ workorders = items;
this.currentSelectedWOPos = selectedWOPos;
this.mTwoPane = mTwoPane;
}catch(Exception e)
{ DliteLogger.WriteLog(this.getClass(), AppSettings.LogLevel.Error, e.getMessage());}
}
@Override
public WORecyclerListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = null;
try{ view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.z_workorder_list_content, parent, false);
}catch(Exception e)
{ DliteLogger.WriteLog(this.getClass(), AppSettings.LogLevel.Error, e.getMessage());}
//return new ViewHolder(view);
return new WORecyclerListAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
try { holder.mItem = workorders.get(position);
holder.mView.setSelected(position == currentSelectedWOPos && mTwoPane);
if(position== currentSelectedWOPos && mTwoPane) {
currentSelectedView = holder.mView;
}
holder.mIdView.setText(workorders.get(position).getDisplayableWorkOrderNum());
holder.mContentView.setText(workorders.get(position).getShortText());
holder.statusIcon.setImageResource(holder.mItem.getMobileObjStatusDrawable());
//holder.woTypeIcon.setImageResource(holder.mItem.getWOTypeDrawable());
//-------------------------------------------------------------
holder.locationTxt.setText(workorders.get(0).getFuncLocation());
holder.typeTxt.setText(workorders.get(0).getOrderType());
//-------------------------------------------------------------
holder.priorityIcon.setImageResource(holder.mItem.getPriorityDrawable());
if(holder.mItem.getBasicFnshDate() != null)
holder.dueDateTxt.setText(Common.getFormattedDate(holder.mItem.getBasicFnshDate().getTime()));
if(!holder.mItem.isAttachmentAvailable())
holder.attachmentIcon.setVisibility(View.INVISIBLE);
else
holder.attachmentIcon.setVisibility(View.VISIBLE);
if(holder.mItem.isErrorEntity()){
holder.errorIndicator.setVisibility(View.VISIBLE);
}else {
holder.errorIndicator.setVisibility(View.GONE);
}
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int clickPos = holder.getAdapterPosition();
if (clickPos != currentSelectedWOPos && mTwoPane) {
currentSelectedWOPos = clickPos;
if (currentSelectedView != null)
currentSelectedView.setSelected(false);
currentSelectedView = v;
v.setSelected(true);
onSelectWOListItem(clickPos);
}
if(!mTwoPane)
onSelectWOListItem(clickPos);
}
});
}catch(Exception e)
{ DliteLogger.WriteLog(this.getClass(), AppSettings.LogLevel.Error,e.getMessage());}
}
@Override
public void onSelectWOListItem(int position) {
}
public class ViewHolder extends RecyclerView.ViewHolder {
public final View mView;
public final View errorIndicator;
public final TextView mIdView;
public final TextView mContentView;
public final ImageView statusIcon;
public final ImageView priorityIcon;
//public final ImageView woTypeIcon;
public final ImageView attachmentIcon;
public final TextView dueDateTxt;
public WorkOrder mItem;
public final TextView locationTxt;
public final TextView typeTxt;
public ViewHolder(View view) {
super(view);
mView = view;
mIdView = (TextView) view.findViewById(R.id.id);
mContentView = (TextView) view.findViewById(R.id.short_text);
statusIcon = (ImageView) view.findViewById(R.id.status_icon);
priorityIcon = (ImageView) view.findViewById(R.id.wo_priority_icon);
//woTypeIcon = (ImageView) view.findViewById(R.id.type_icon);
locationTxt = (TextView) view.findViewById(R.id.locationTxt);
attachmentIcon = (ImageView) view.findViewById(R.id.attach_icon);
dueDateTxt = (TextView) view.findViewById(R.id.dueDateTxt);
errorIndicator = view.findViewById(R.id.errorIndicator);
typeTxt = (TextView) view.findViewById(R.id.type_txt);
}
@Override
public String toString() {
try{
return super.toString() + " '" + mContentView.getText() + "'";
}catch(Exception e)
{ DliteLogger.WriteLog(this.getClass(), AppSettings.LogLevel.Error,e.getMessage());}
return "";
}
}
}
When I override "onBindViewHolder" method in ZWORecyclerListAdapter class it showing as "method doesnot override method of super class"
This "onBindViewHolder" method is already there in "WORecyclerListAdapter" class.
如何在ZWORecyclerListAdapter
中覆盖onBindViewHolder
方法?
我试过了,但没有成功。请帮我一下。提前感谢。
由于ZWORecyclerListAdapter
扩展了WORecyclerListAdapter
,而CCD_13又扩展了RecyclerView.Adapter<WORecyclerListAdapter.ViewHolder>
,因此onBindViewHolder
方法的第二个参数必须是WORecyclerListAdapter.ViewHolder
。而您使用的是ZWORecyclerListAdapter
自己的ViewHolder
,它不起作用。
您可能想要创建一个通用ViewHolder
,它将适用于两个适配器。