エラー:アンドロイドはピットステップxxxは抽象的ではないが、抽象はXXX onBindViewHolder方法ではカバーされていません

最近、古いプロジェクトを維持するため、我々はリストが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);
    }
}
公開された42元の記事 ウォン称賛24 ビュー60000 +

おすすめ

転載: blog.csdn.net/u010725171/article/details/82385860