1

I am using autocomplete textview in my app,it works fine all devices and device version.But,my application got crashed while try to start typing in the autotextview for the device version 5.0 the app got crashed.

I have used the custom autocomplete text view adapter class from the following codings

Autocompletetextview with custom adapter and filter

It shows the following Error in the logcat

6-24 12:01:26.688 12893-12893/com.app.ex D/AndroidRuntime﹕ Shutting down VM 06-24 12:01:26.699 12893-12893/com.app.ex E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.app.ex, PID: 12893 java.lang.NegativeArraySizeException: -512 at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at android.graphics.Bitmap.nativeCreate(Native Method) at android.graphics.Bitmap.createBitmap(Bitmap.java:843) at android.graphics.Bitmap.createBitmap(Bitmap.java:803) at android.view.View.buildDrawingCache(View.java:14291) at android.view.View.updateDisplayListIfDirty(View.java:14047) at android.view.View.getDisplayList(View.java:14089) at android.view.View.draw(View.java:14856) at android.view.ViewGroup.drawChild(ViewGroup.java:3406) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3200) at android.view.View.updateDisplayListIfDirty(View.java:14061) at android.view.View.getDisplayList(View.java:14089) at android.view.View.draw(View.java:14856) at android.view.ViewGroup.drawChild(ViewGroup.java:3406) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3200) at android.view.View.updateDisplayListIfDirty(View.java:14061) at android.view.View.getDisplayList(View.java:14089) at android.view.View.draw(View.java:14856) at android.view.ViewGroup.drawChild(ViewGroup.java:3406) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3200) at android.view.View.draw(View.java:15135) at android.view.View.updateDisplayListIfDirty(View.java:14066) at android.view.View.getDisplayList(View.java:14089) at android.view.View.draw(View.java:14856) at android.view.ViewGroup.drawChild(ViewGroup.java:3406) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3200) at android.view.View.updateDisplayListIfDirty(View.java:14061) at android.view.View.getDisplayList(View.java:14089) at android.view.View.draw(View.java:14856) at android.view.ViewGroup.drawChild(ViewGroup.java:3406) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3200) at android.view.View.draw(View.java:15135) at android.view.View.updateDisplayListIfDirty(View.java:14066) at android.view.View.getDisplayList(View.java:14089) at android.view.View.draw(View.java:14856) at android.view.ViewGroup.drawChild(ViewGroup.java:3406) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3200) at android.view.View.updateDisplayListIfDirty(View.java:14061) at android.view.View.getDisplayList(View.java:14089) at android.view.View.draw(View.java:14856) at android.view.ViewGroup.drawChild(ViewGroup.java:3406) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3200) at android.view.View.updateDisplayListIfDirty(View.java:14061) at android.view.View.getDisplayList(View.java:14089) at android.view.View.draw(View.java:14856) at android.view.ViewGroup.drawChild(ViewGroup.java:3406) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3200) at android.view.View.draw(View.java:15135) at android.widget.FrameLayout.draw(FrameLayout.java:592) at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2595) at android.view.View.updateDisplayListIfDirty(View.java:14066) at android.view.View.getDisplayList(View.java:14089) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:266) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:272) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:311) at android.view.ViewRootImpl.draw(ViewRootImpl.java:2522) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2367) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1998) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1077) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5884) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) at android.view.Choreographer.doCallbacks(Choreographer.java:580) at android.view.Choreographer.doFrame(Choreographer.java:550) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135)

Community
  • 1
  • 1

2 Answers2

0

It shows negative error exception.
So please check the array size whether the array you passed has a greater than size 0 or the adapter which you set to the autocomplete may be null or empty.

סטנלי גרונן
  • 2,917
  • 23
  • 46
  • 68
Daya Nithi
  • 117
  • 1
  • 10
-1

My below code works perfectly in lollipop, can you check it out

class GooglePlacesAutocompleteAdapter extends ArrayAdapter<VehicleVo>
            implements Filterable {

        private LayoutInflater mInflater;

        public GooglePlacesAutocompleteAdapter(Context context,
                int textViewResourceId) {
            super(context, textViewResourceId);
            mInflater = LayoutInflater.from(context);
            resultList = new ArrayList<VehicleVo>();
        }

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

        @Override
        public VehicleVo getItem(int position) {
            return resultList.get(position);
        }

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

            final ViewHolder holder;
            //your layout design code goes gere
            return convertView;
        }

        class ViewHolder {
            private TextView sLocationName;

        }

        @Override
        public Filter getFilter() {
            Filter filter = new Filter() {
                @Override
                protected FilterResults performFiltering(CharSequence constraint) {
                    FilterResults filterResults = new FilterResults();
                    if (TextUtils.isEmpty(constraint)) {
                        resultList.addAll(vehiclelist);
                    } else {
                        // Retrieve the autocomplete results.
                        resultList = autocomplete(constraint.toString());
                        // Assign the data to the FilterResults
                        filterResults.values = resultList;
                        filterResults.count = resultList.size();
                    }
                    return filterResults;
                }

                @Override
                protected void publishResults(CharSequence constraint,
                        FilterResults results) {

                    LogUtil.d("result String" + results.count);

                    if (results != null && results.count > 0) {
                        notifyDataSetChanged();
                    } else {
                        notifyDataSetChanged();
                    }
                }
            };
            return filter;

        }
    }
Madhu
  • 1,780
  • 23
  • 47
  • hi,madhu Thanks for your reply then your saying that there is a problem in my adapter class only,but it works fine for all devices except the version 5.0 – Harini Pasupathy Jun 24 '15 at 07:16
  • no it will not work: in `publishResults` you are not using `results.values` at all, so how is it supposed to work? also, please post a **working code**: yours doesn't even compile – pskink Jun 24 '15 at 07:31