Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android AutoCompleteTextView在发布版本中崩溃应用程序_Java_Android_Autocomplete - Fatal编程技术网

Java Android AutoCompleteTextView在发布版本中崩溃应用程序

Java Android AutoCompleteTextView在发布版本中崩溃应用程序,java,android,autocomplete,Java,Android,Autocomplete,我正在使用AutoCompleteTextView从服务器获取动态数据。调试生成在版本中生成异常时平稳运行 java.lang.NullPointerException: throw with null exception at c10.getView(SourceFile:50) at android.widget.AbsListView.obtainView(AbsListView.java:2367) at android.widget.Dr

我正在使用AutoCompleteTextView从服务器获取动态数据。调试生成在版本中生成异常时平稳运行

java.lang.NullPointerException: throw with null exception
        at c10.getView(SourceFile:50)
        at android.widget.AbsListView.obtainView(AbsListView.java:2367)
        at android.widget.DropDownListView.obtainView(DropDownListView.java:305)
        at android.widget.ListView.measureHeightOfChildren(ListView.java:1326)
        at android.widget.ListPopupWindow.buildDropDown(ListPopupWindow.java:1233)
        at android.widget.ListPopupWindow.show(ListPopupWindow.java:596)
        at android.widget.AutoCompleteTextView.showDropDown(AutoCompleteTextView.java:1215)
        at android.widget.AutoCompleteTextView.updateDropDownForFilter(AutoCompleteTextView.java:1084)
        at android.widget.AutoCompleteTextView.onFilterComplete(AutoCompleteTextView.java:1066)
        at android.widget.Filter$ResultsHandler.handleMessage(Filter.java:285)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:165)
        at android.app.ActivityThread.main(ActivityThread.java:6375)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
我保留了在自动完成适配器中使用的模型

-keep public www.example.MyModel {
  public *** get*();
  public void set*(***);
}
在build.gradle文件中启用minify并将资源收缩为false 使其正常工作,但在启用这些功能时,会导致应用程序崩溃,出现上述异常。 我应该如何使用minifyEnabled和shrinkResources true解决此问题

我正在使用以下适配器


public class MyAdapter extends ArrayAdapter<MyModel> {

    Context context;
    int resource, textViewResourceId;
    List<MyModel> items, tempItems, suggestions;

    public MyAdapter(Context context, int resource, int textViewResourceId, List<MyModel> items) {
        super(context, resource, textViewResourceId, items);
        this.context = context;
        this.resource = resource;
        this.textViewResourceId = textViewResourceId;
        this.items = items;
        tempItems = new ArrayList<MyModel>(items); // this makes the difference.
        suggestions = new ArrayList<MyModel>();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.row, parent, false);
        }
        MyModel mymodel = items.get(position);
        if (mymodel != null) {
            TextView lblName = (TextView) view.findViewById(R.id.tv_site_name);
            if (lblName != null)
                lblName.setText(mymodel.getName());
            TextView lblAddress = (TextView) view.findViewById(R.id.tv_site_title);
            if (lblAddress != null)
                lblAddress.setText(mymodel.getAddress().getAddress());
        }
        return view;
    }

    @Override
    public Filter getFilter() {
        return nameFilter;
    }
    @Override
    public MyModel getItem(int index) {
        return items.get(index);
    }


    /**
     * Custom Filter implementation for custom suggestions we provide.
     */
    Filter nameFilter = new Filter() {
        @Override
        public CharSequence convertResultToString(Object resultValue) {
            String str = ((MyModel) resultValue).getName();
            return str;
        }

        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            if (constraint != null) {
                suggestions.clear();
                //filter method logic goes here
                for (MyModel people : tempItems) {
                    if (people.getName().toLowerCase().startsWith(constraint.toString().toLowerCase())) {
                        suggestions.add(people);
                    }
                }
                FilterResults filterResults = new FilterResults();
                filterResults.values = suggestions;
                filterResults.count = suggestions.size();
                return filterResults;
            } else {
                return new FilterResults();
            }
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            List<MyModel> filterList = (ArrayList<MyModel>) results.values;
            if (results != null && results.count > 0) {
                clear();
                for (MyModel people : filterList) {
                    add(people);
                    notifyDataSetChanged();
                }
            }
        }
    };
}

公共类MyAdapter扩展了ArrayAdapter{
语境;
int资源,textViewResourceId;
列出项目、临时项目、建议;
公共MyAdapter(上下文上下文、int资源、int textViewResourceId、列表项){
超级(上下文、资源、textViewResourceId、项目);
this.context=上下文;
这个资源=资源;
this.textViewResourceId=textViewResourceId;
这个项目=项目;
tempItems=newarraylist(items);//这会产生不同。
建议=新建ArrayList();
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=转换视图;
if(convertView==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
视图=充气机。充气(R.layout.row,父级,false);
}
MyModel MyModel=items.get(位置);
if(mymodel!=null){
TextView lblName=(TextView)view.findViewById(R.id.tv\u站点名称);
如果(lblName!=null)
lblName.setText(mymodel.getName());
TextView lblAddress=(TextView)view.findViewById(R.id.tv\u site\u title);
如果(lblAddress!=null)
lblAddress.setText(mymodel.getAddress().getAddress());
}
返回视图;
}
@凌驾
公共过滤器getFilter(){
返回名称过滤器;
}
@凌驾
公共MyModel getItem(int索引){
返回项目。获取(索引);
}
/**
*我们提供的自定义建议的自定义筛选器实现。
*/
过滤器名称过滤器=新过滤器(){
@凌驾
public CharSequence ConvertResultString(对象结果值){
字符串str=((MyModel)resultValue.getName();
返回str;
}
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束){
if(约束!=null){
建议。清晰();
//过滤方法逻辑在这里
对于(MyModel人员:临时项目){
if(people.getName().toLowerCase().startsWith(constraint.toString().toLowerCase())){
建议。添加(人);
}
}
FilterResults FilterResults=新的FilterResults();
filterResults.values=建议;
filterResults.count=建议.size();
返回过滤器结果;
}否则{
返回新的FilterResults();
}
}
@凌驾
受保护的void publishResults(CharSequence约束、FilterResults结果){
List filterList=(ArrayList)results.values;
if(results!=null&&results.count>0){
清除();
for(MyModel人员:过滤器列表){
增加(人);
notifyDataSetChanged();
}
}
}
};
}

它在调试构建或将minifyEnabled和shrinkResources设置为false时可以正常工作

MyAdapter.java的第50行是什么