[Android] [RecyclerView]方法不会覆盖或实现超类型的方法

时间:2018-07-08 23:07:32

标签: java android android-recyclerview

我正在按照this教程开发一个简单的Android应用程序。我在此消息的 onBindViewHolder 方法上遇到编译错误:

错误:方法未从父类型覆盖或实现方法

这是我的代码:

import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class CryptogramPairingAdapter extends RecyclerView.Adapter {
    private String[] mDataset;

    // Provide a reference to the views for each data item
    // Complex data items may need more than one view per item, and
    // you provide access to all the views for a data item in a view holder
    public static class ViewHolder extends RecyclerView.ViewHolder {
        // each data item is just a string in this case
        public TextView mTextView;
        public ViewHolder(TextView v) {
            super(v);
            mTextView = v;
        }
    }

    // Provide a suitable constructor (depends on the kind of dataset)
    public CryptogramPairingAdapter(String[] myDataset) {
        mDataset = myDataset;
    }

    // Create new views (invoked by the layout manager)
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent,
                                                   int viewType) {
        // create a new view
        TextView v = (TextView) LayoutInflater.from(parent.getContext())
                .inflate(R.layout.pair_crypto_recyclerview, parent, false);
        CryptogramPairingAdapter.ViewHolder vh = new ViewHolder(v);
        return vh;
    }

    // Replace the contents of a view (invoked by the layout manager)
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        // - get element from your dataset at this position
        // - replace the contents of the view with that element
        holder.mTextView.setText(mDataset[position]);

    }

    // Return the size of your dataset (invoked by the layout manager)
    @Override
    public int getItemCount() {
        return mDataset.length;
    }
}

我很困惑,因为代码与引用几乎相同(除了修改后的名称)。

1 个答案:

答案 0 :(得分:3)

我建议您将ViewHolder更改为ViewHolder之外的其他名称,因为它与ViewHolder冲突,并且只会使您在区分{{1} }来自ViewHolder

(和I complained to Google about this lousy practice in their example

鉴于代码处于当前状态,请更改:

ViewHolder

收件人:

public class CryptogramPairingAdapter extends RecyclerView.Adapter