我有以下代码

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创建,因为ModelViewHolderModelAdapter的范围内。

解决问题的方法是将ModelViewHolder类放入新的* .java文件中。

08-27 13:38