Android 数组适配器中的空指针异常

Android 数组适配器中的空指针异常,android,nullpointerexception,android-arrayadapter,Android,Nullpointerexception,Android Arrayadapter,为我的自动完成文本视图创建了自定义阵列适配器 java.lang.NullPointerException:尝试在null对象上调用虚拟方法“int java.util.ArrayList.size()” 公共类SkillsAutocompleteAdapter扩展了ArrayAdapter{ Context mContext; int layoutResourceId; private ItemFilter mFilter = new ItemFilter(); private ArrayLi

为我的自动完成文本视图创建了自定义阵列适配器

java.lang.NullPointerException:尝试在null对象上调用虚拟方法“int java.util.ArrayList.size()”

公共类SkillsAutocompleteAdapter扩展了ArrayAdapter{

Context mContext;
int layoutResourceId;
private ItemFilter mFilter = new ItemFilter();
private ArrayList<Skills> originalData;
private ArrayList<Skills> filteredData;

public  SkillsAutocompleteAdapter(Context mContext, int layoutResourceId, ArrayList<Skills> list) {
    super(mContext, layoutResourceId, list);

    this.layoutResourceId = layoutResourceId;
    this.mContext = mContext;
    filteredData = list;
    originalData = list;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View rowView = convertView;

    if (rowView == null) {
        LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
        rowView = inflater.inflate(layoutResourceId, parent, false);
        ViewHolder viewHolder = new ViewHolder();
        viewHolder.rdoText = (TextView) rowView.findViewById(R.id.txtTitle);
        rowView.setTag(viewHolder);
    }

    ViewHolder holder = (ViewHolder) rowView.getTag();
    Skills folder = filteredData.get(position);
    holder.rdoText.setText(folder.getSkill());
    holder.rdoText.setTag(folder.getSkillId());

    return rowView;
}

@Override
public int getCount() {
    return filteredData.size();
}

@Override
public Skills getItem(int position) {
    return filteredData.get(position);
}

@Override
public long getItemId(int position) {
    return filteredData.get(position).getSkillId();
}

public Filter getFilter() {
    return mFilter;
}

static class ViewHolder {
    public TextView rdoText;
}

private class ItemFilter extends Filter {

    @Override
    protected FilterResults performFiltering(CharSequence constraint) {

        String filterString = constraint.toString().toLowerCase();
        FilterResults results = new FilterResults();
        int count = originalData.size();
        final ArrayList<Skills> tempFilterList = new ArrayList<Skills>(count);
        String filterableString;

        for (int i = 0; i < count; i++) {
            filterableString = originalData.get(i).getSkill();
            if (filterableString.toLowerCase().contains(filterString)) {
                tempFilterList.add(originalData.get(i));
            }
        }

        results.values = tempFilterList;
        Log.i("test", "3");
        results.count = tempFilterList.size();

        return results;
    }

    @SuppressWarnings("unchecked")
    @Override
    protected void publishResults(CharSequence constraint, FilterResults results) {
        filteredData = (ArrayList<Skills>) results.values;
        notifyDataSetChanged();
    }
}

 }
换行-

private ArrayList<Skills> originalData = new ArrayList<Skills>();
private ArrayList<Skills> filteredData = new ArrayList<Skills>();

SkillsAutocompleteAdapter(Context mContext, int layoutResourceId, ArrayList<Skills> list) {
    super(mContext, layoutResourceId, list);

    this.layoutResourceId = layoutResourceId;
    this.mContext = mContext;
    this.filteredData = list;
    this.originalData = list;
}
private ArrayList originalData=new ArrayList();
私有ArrayList Filteredata=新ArrayList();
SkillsAutocompleteAdapter(上下文mContext、int-layoutResourceId、ArrayList列表){
super(mContext、layoutResourceId、list);
this.layoutResourceId=layoutResourceId;
this.mContext=mContext;
this.filteredData=列表;
this.originalData=列表;
}
到-

private ArrayList originalData;
私有阵列列表过滤器数据;
整数计数=0;
SkillsAutocompleteAdapter(上下文mContext、int-layoutResourceId、ArrayList列表){
super(mContext、layoutResourceId、list);
this.layoutResourceId=layoutResourceId;
this.mContext=mContext;
filteredData=列表;
原始数据=列表;
count=list.size()
}
@凌驾
public int getCount(){
//返回filteredData.size();
返回计数;
}

这是您的
技能中的第60行完成适配器
?返回此.filteredData.size();您正在调整的数组列表中可能没有数据第一次检查ArrayList不为空您正在传入adapter.in构造函数对吗?但不起作用。为什么使用customobject?获取所选项idreturn this.Filteredata.size();此行给出ErrorUseFilteredata.size()@用户rd:你试过了吗?嘿,kevz,我已经试过了,并且再次修改了我的代码,但仍然得到相同的错误。*这个错误是针对getItem size中的originalData的,我只是通过log@userrd:rt.有效吗?@userrd:检查我的编辑不工作kevz…根据您的要求检查我编辑的代码。
FATAL EXCEPTION: main
02-01 18:07:49.115 13543-13543/com.okayconnect.app E/AndroidRuntime: Process: com.okayconnect.app, PID: 13543
02-01 18:07:49.115 13543-13543/com.okayconnect.app E/AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
02-01 18:07:49.115 13543-13543/com.okayconnect.app E/AndroidRuntime:     at com.okayconnect.app.adapters.SkillsAutocompleteAdapter.getCount(SkillsAutocompleteAdapter.java:60)
02-01 18:07:49.115 13543-13543/com.okayconnect.app E/AndroidRuntime:     at android.widget.AutoCompleteTextView$PopupDataSetObserver$1.run(AutoCompleteTextView.java:1297)
02-01 18:07:49.115 13543-13543/com.okayconnect.app E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:739)
02-01 18:07:49.115 13543-13543/com.okayconnect.app E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
02-01 18:07:49.115 13543-13543/com.okayconnect.app E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:155)
02-01 18:07:49.115 13543-13543/com.okayconnect.app E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5696)
02-01 18:07:49.115 13543-13543/com.okayconnect.app E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
02-01 18:07:49.115 13543-13543/com.okayconnect.app E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
02-01 18:07:49.115 13543-13543/com.okayconnect.app E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
02-01 18:07:49.115 13543-13543/com.okayconnect.app E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)

**Find my answer i add following line to my code **

@Override
public int getCount() {
    Log.i("test", "size");
    if (filteredData != null)
        return filteredData.size();
    else
        return 0;
}
Use following:-

this.filteredData.addAll(list);
this.originalData.addAll(list);
private ArrayList<Skills> originalData = new ArrayList<Skills>();
private ArrayList<Skills> filteredData = new ArrayList<Skills>();

SkillsAutocompleteAdapter(Context mContext, int layoutResourceId, ArrayList<Skills> list) {
    super(mContext, layoutResourceId, list);

    this.layoutResourceId = layoutResourceId;
    this.mContext = mContext;
    this.filteredData = list;
    this.originalData = list;
}
private ArrayList<Skills> originalData;
private ArrayList<Skills> filteredData;
int count = 0;

SkillsAutocompleteAdapter(Context mContext, int layoutResourceId, ArrayList<Skills> list) {
    super(mContext, layoutResourceId, list);

    this.layoutResourceId = layoutResourceId;
    this.mContext = mContext;
    filteredData = list;
    originalData = list;
    count = list.size()
}

@Override
public int getCount() {
    //return filteredData.size();
return count;
}