我正在尝试实例化自定义列表适配器。
适配器:
private class ProverbAdapter extends ArrayAdapter<String> {
public ProverbAdapter(Context context, int layout, int resId, String[] items) {
super(context, layout, resId, items);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if(row == null) {
row = getLayoutInflater().inflate(R.layout.proverb_layout, parent, false);
}
String item = getItem(position);
return row;
}
}
实例化
Context c = getActivity().getApplicationContext();
ProverbAdapter adapter = new ProverbAdapter(c,R.layout.proverb_layout,R.id.proverb_content,all_proverbs);
我从编译器收到错误
无法访问封闭类型的MainActivity。必须使用类型为MainActivity的实例来限定分配。
我不确定我在这里做错了什么。似乎传递片段上下文应该足够了。
答案 0 :(得分:2)
您有两种选择:
private static class ProverbAdapter
这是因为非静态内部类具有对其外部类的实例的引用,因此您可以轻松访问该外部类的方法和变量。如果没有在外部类的实例中实例化内部类,则该外部类没有可用的引用。
如果您将ProverbAdapter设为静态,则会在getLayoutInflater()
上收到错误消息。静态内部类不能从外部类访问方法或变量。您可以通过调用LayoutInflater.from(getContext());
来解决此特定问题。