自定义ArrayAdapter NPE:尝试在null对象上调用TextView

时间:2017-06-10 01:54:56

标签: java android arraylist android-arrayadapter

所以,我正在为应该显示个人资料信息的adapter编写这个漂亮的自定义listView。一切运作良好 - 我成功地从数据库中提取信息,将其放入ArrayList并在MainActivity中实现类似内容:

ProfileListAdapter adapter = new ProfileListAdapter(activity, R.layout.existing_profile_menu, profiles);
listView.setAdapter(adapter);

对于ProfileListAdapter我使用:

public class ProfileListAdapter extends ArrayAdapter<ArrayList<String>> {
    private Context context;
    private ArrayList<ArrayList<String>> values;
    private int layoutId;

    public ProfileListAdapter(Context context, int resource, ArrayList<ArrayList<String>> values)
    {
        super(context, R.layout.existing_profile_menu, values);
        this.context = context;
        this.layoutId = resource;
        this.values = values;
    }

    @Override
    public View getView(int position,View convertView,ViewGroup parent)
    {
        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.existing_profile_menu, parent, false);

        TextView mainTitle = (TextView)rowView.findViewById(R.id.mainLine);
        TextView subTitle = (TextView)rowView.findViewById(R.id.subLine);

        mainTitle.setText(values.get(position).get(1) + " " + values.get(position).get(2));
        subTitle.setText(values.get(position).get(6) + " " + values.get(position).get(3));

        return rowView;
    }

}

我得到的错误是:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

而且我很确定它在这个部分的某个地方:

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.existing_profile_menu, parent, false);

我在这里看了几个类似的问题,但找不到任何可以让我这么做的事情。

[UPDATE]

问题已解决。确保视图位于您用于适配器的布局中。或者你没有搞乱布局命名。

0 个答案:

没有答案