如何修复此错误?错误:无法找到Vholder.setData(mValues.get(position));



我有一个错误说:

error: cannot find symbol
Vholder.setData(mValues.get(position));
^
symbol:   method setData(Object)
location: variable Vholder of type ViewHolder

如何解决这些问题?

下面是代码:这是我的适配器类我的网格布局。我不知道为什么它不工作。

public class TrackAdapter extends RecyclerView.Adapter {
ArrayList mValues;
Context mContext;
protected ItemListener mListener;
public TrackAdapter(Context context, ArrayList values, ItemListener itemListener) {
mValues = values;
mContext = context;
mListener=itemListener;
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView textView;
public ImageView imageView;
public RelativeLayout relativeLayout;
TrackData data;
public ViewHolder(View v) {
super(v);
v.setOnClickListener(this);
textView = (TextView) v.findViewById(R.id.textView);
imageView = (ImageView) v.findViewById(R.id.imageView);
relativeLayout = (RelativeLayout) v.findViewById(R.id.relativeLayout);
}
public void setData(TrackData data) {
this.data = data;
textView.setText(data.text);
imageView.setImageResource(data.icon);
relativeLayout.setBackgroundColor(Color.parseColor(data.gridBGColor));
}
@Override
public void onClick(View view) {
if (mListener != null) {
mListener.onItemClick(data);
}
}
}
@Override
public TrackAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.makati_recycler_grid_track, parent, false);
return new ViewHolder(view);
}
@Override
**public void onBindViewHolder(@NonNull RecyclerView.ViewHolder Vholder, int position) {
Vholder.setData(mValues.get(position));
}**
@Override
public int getItemCount() {
return mValues.size();
}
public interface ItemListener {
void onItemClick(TrackData data);
}
}

或者这里是行

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder Vholder, int position) {
Vholder.setData(mValues.get(position));
}

你必须用RecyclerView Type扩展你的TrackAdapter。ie .

public class TrackAdapter extends RecyclerView.Adapter< ViewHolder >

应该强制转换RecyclerView。ViewHolderTrackAdapter。ViewHolder这样的:

if (Vholder instanceof TrackAdapter.ViewHolder){
((TrackAdapter.ViewHolder)Vholder).setData(mValues.get(position));
}

最新更新