Java inflater.inflate在适配器getview方法中提供空指针。为什么?
在我的Android应用程序中,我正在构建我的第一个自定义适配器。现在,我在为convertView充气的行上遇到一个空指针。请参阅下面的代码: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
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));