Java inflater.inflate在适配器getview方法中提供空指针。为什么?

Java inflater.inflate在适配器getview方法中提供空指针。为什么?,java,android,nullpointerexception,listadapter,Java,Android,Nullpointerexception,Listadapter,在我的Android应用程序中,我正在构建我的第一个自定义适配器。现在,我在为convertView充气的行上遇到一个空指针。请参阅下面的代码: private List<String> possibilitiesList = new ArrayList<String>(); public void setPossibilitiesList(List<String> possibilitiesList) { for (String possibili

在我的Android应用程序中,我正在构建我的第一个自定义适配器。现在,我在为convertView充气的行上遇到一个空指针。请参阅下面的代码:

private List<String> possibilitiesList = new ArrayList<String>();

public void setPossibilitiesList(List<String> possibilitiesList) {
    for (String possibility : possibilitiesList) {
        addItem(possibility);
    }
}

public void addItem (final String item) {
    possibilitiesList.add(item);
    notifyDataSetChanged();
}

private LayoutInflater inflater;

@Override
public View getView(final int position, View convertView, ViewGroup viewGroup) {
    Log.e(this, "is called here!!");
    ViewHolder holder = new ViewHolder();
    convertView = inflater.inflate(R.layout.list_item_posibility, viewGroup, false);
    holder.possibilityTitle = (TextView) convertView.findViewById(R.id.text_possibility);
    holder.possibilityTitle.setText(possibilitiesList.get(position));
    return convertView;
}
private-List-posabilitieslist=new-ArrayList();
公共无效集合可能性列表(列表可能性列表){
for(字符串可能性:可能性列表){
附加项(可能性);
}
}
公共无效附加项(最终字符串项){
可能性列表。添加(项目);
notifyDataSetChanged();
}
私人充气机;
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组视图组){
Log.e(这个“在这里被称为!!”);
ViewHolder=新的ViewHolder();
convertView=充气机。充气(R.layout.list\u item\u posibility,viewGroup,false);
holder.possibilityTitle=(TextView)convertView.findViewById(R.id.text\u可能性);
holder.possibilityTitle.setText(position)(可能列表.get(位置));
返回视图;
}
在我的片段中,我将可能性列表设置为:

List<String> list = Arrays.asList(getResources().getStringArray(R.array.the_possibilities));
Log.e(this, new Integer(list.size()).toString()); // outputs 8
adapter.setPossibilitiesList(list);
List List=Arrays.asList(getResources().getStringArray(R.array.the_));
Log.e(这是一个新的整数(list.size()).toString());//产出8
adapter.setposabilitieslist(列表);
我100%确信list_item_posibility.xml是存在的(Android Studio也强调它是存在的),所以我有点不明白为什么它会给出一个空指针


有人知道我在这里做错了什么吗?

私人停车场充气机只是声明为未初始化

您需要将上下文传递给适配器类的构造函数,然后使用它初始化充气器

 new Yourcustomadapter(ActivityName.this); 
// pass the context here and other params
然后

也检查一下这个


您的充气机为空,您需要将其设置为充气机的参考

private final LayoutInflater inflater;

public CustomAdapter(LayoutInflater inflater) {
  this.inflater = inflater;
}

@Override
public View getView(final int position, View convertView, ViewGroup viewGroup) {
    Log.e("this", "is called here!!");
    ViewHolder holder = new ViewHolder();
    convertView = inflater.inflate(R.layout.list_item_posibility, viewGroup, false);
    holder.possibilityTitle = (TextView) convertView.findViewById(R.id.text_possibility);
    holder.possibilityTitle.setText(possibilitiesList.get(position));
    return convertView;
}
然后,在哪里重新安装适配器,或者:(取决于初始化适配器的位置)


告诉我们您初始化充气机的位置。您的
充气机是否已初始化?@Raghunandan-我在问题中添加了充气机的初始化。@kramer65这只是一个声明,不是初始化,或者他可以使用ViewGroup@blackbelt是的,当然可以用。@Blundell我已经说过了,是的,我复制了
newcustomadapter(ActivityName.this)来自您的帖子。但正如我所说,在回答之前,我已经引用了“您需要将上下文传递给适配器类的构造函数,然后使用它初始化充气器”。我只是为了使它完整而编辑。谢谢你,现在它不再给我空指针了。再问一个问题;它现在只显示第一项,即使我传递给它的列表有8种可能性。有什么想法吗?@kramer65演示如何将列表传递给适配器类,以及它在哪里初始化
private final LayoutInflater inflater;

public CustomAdapter(LayoutInflater inflater) {
  this.inflater = inflater;
}

@Override
public View getView(final int position, View convertView, ViewGroup viewGroup) {
    Log.e("this", "is called here!!");
    ViewHolder holder = new ViewHolder();
    convertView = inflater.inflate(R.layout.list_item_posibility, viewGroup, false);
    holder.possibilityTitle = (TextView) convertView.findViewById(R.id.text_possibility);
    holder.possibilityTitle.setText(possibilitiesList.get(position));
    return convertView;
}
new CustomAdapter(LayoutInflater.from(this));
new CustomAdapter(LayoutInflater.from(context));
new CustomAdapter(getActivity().getLayoutInflater());
new CustomAdapter((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE));