最近、古いプロジェクトを維持するため、我々はリストがStringであるエンティティクラスアダプタの前に書かれた固定同じアダプタを使用するGridViewの二つの異なるインタフェースが、ある見つけましたが、新しい要件は、アダプターに必要なようにポンプ、異なるBeanを一致させる必要があります+2フォームサブクラスベースクラスは、ベースクラスは、Beanと一致する汎用異なるの使用中に、静的なアダプタです。
変更操作後に三つの軸は、与えられた:MyAdapter抽象的ではない、と抽象メソッドMyAdapter onBindViewHolderが覆われていません。
これはケースが実際にonBindViewHolderカバーされているものである
次のようにアダプターの基本クラス:
public static class MyAdapter<T extends Object> extends RecyclerView.Adapter<ViewHolder> {
private Context mContext;
protected List<T> mDatas;
private LayoutInflater mInflater;
private boolean mIsChangeItemLayout = false;
public MyAdapter(Context mContext, List<T> datas, boolean isChangItemlayout) {
this.mContext = mContext;
setList(datas);
setIsChangeLayout(isChangItemlayout);
mInflater = LayoutInflater.from(this.mContext);
}
public void updateData(List<T> datas) {
setList(datas);
notifyDataSetChanged();
}
private void setList(List<T> datas) {
this.mDatas = datas;
}
private void setIsChangeLayout(boolean changItemlayout) {
this.mIsChangeItemLayout = changItemlayout;
}
@Override
public int getItemCount() {
return mDatas.size();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int i) {
View view = mInflater.inflate(mIsChangeItemLayout ? R.layout.privilege_category_title_item : R.layout.fav_category_title_item,null);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int position) {
viewHolder.fav_title_btn.setText("");
viewHolder.fav_title_btn.setGravity(Gravity.CENTER);
viewHolder.fav_title_btn.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN ) {
Log.d(TAG, "---------------key down--------");
switch (i) {
case KeyEvent.KEYCODE_DPAD_DOWN:
viewHolder.fav_title_btn.setBackgroundResource(R.drawable.horizontalscrollview_title_selector_grey);
break;
default:
break;
}
}
return false;
}
});
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView fav_title_btn;
public ViewHolder(View view) {
super(view);
fav_title_btn = view.findViewById(R.id.fav_title_btn);
}
}
}
サブクラスは、コードを書き直し
たオーバーライドサブクラスでは、明らかに、何ら問題はないようですviewHolder.fav_title_btn.setText("")
いくつかの検索、問題解決:
ViewHolderは同じレベルではなく、アダプタの内側に静的内部クラスとアダプタとして書き出さ
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView fav_title_btn;
public ViewHolder(View view) {
super(view);
fav_title_btn = view.findViewById(R.id.fav_title_btn);
}
}