我有以下代码
public abstract class BaseAdapter<T, V extends BaseAdapter.ViewHolder> extends ArrayAdapter<T> {
public BaseAdapter(Context context, int resource, Collection<T> collection) {
// typical constructor logic
}
// some other custom defined methods
public static class ViewHolder {
// custom defined logic
}
}
public class ModelAdapter extends BaseAdapter<Model, ModelAdapter.ModelViewHolder> {
public ModelAdapter(Context context, int resource, Collection<Model> collection) {
super(context, resource, collection);
// typical constructor logic
}
public static class ModelViewHolder extends ViewHolder {
// custom defined logic
}
}
BaseAdapter和ModelAdapter位于单独的文件中。问题是尝试定义ModelAdapter时出现编译错误:
在当前上下文中无法访问ModelViewHolder
我不太了解这个错误,也无法弄清楚我在做什么错。有人可以向我解释这个问题或可以澄清这种情况的链接吗?
最佳答案
创建死锁
您将ModelAdapter.ModelViewHolder
用作BaseAdapter
的模板参数,并让ModelAdapter
扩展BaseAdapter
,然后编译器首先尝试创建ModelViewHolder
,但尚未创建ModelAdapter.ModelViewHolder
的类(类型为的类)。它必须等待ModelAdapter
创建,因为ModelViewHolder
在ModelAdapter
的范围内。
解决问题的方法是将ModelViewHolder
类放入新的* .java文件中。