0

I'm using StickyGridHeaders with an adapter. Everything works fine until I try to use an Animation on an item from the grid (I want to fade out an item wwhen it's deleted).

This part of getView works:

public View getView(int position, View convertView, final ViewGroup parent) {
    ViewHolder holder;


    if (convertView == null) {
        convertView = myInflater.inflate(R.layout.item_savedsearchlist,
                null);

        holder = new ViewHolder();
        holder.Tv1 = (TextView) convertView.findViewById(R.id.textView1);

        convertView.setTag(holder);
    }

    else {
        holder = (ViewHolder) convertView.getTag();

    }

    holder.Deletebtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {


            Animation anim = AnimationUtils.loadAnimation(ctx,
                    android.R.anim.slide_out_right);

            anim.setAnimationListener(new Animation.AnimationListener() {

                removeThisItem(); 
                notifiyDataSetChanged; 

        }
    });

    return convertView;
}

This doesn't:

public View getView(int position, View convertView, final ViewGroup parent) {
    ViewHolder holder;


    if (convertView == null) {
        convertView = myInflater.inflate(R.layout.item_savedsearchlist,
                null);

        holder = new ViewHolder();
        holder.Tv1 = (TextView) convertView.findViewById(R.id.textView1);

        convertView.setTag(holder);
    }

    else {
        holder = (ViewHolder) convertView.getTag();

    }

    final View rc = holder.Tv1;     // I tried this with different Views from the item layout

    holder.Deletebtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {


            Animation anim = AnimationUtils.loadAnimation(ctx,
                    android.R.anim.slide_out_right);

            anim.setAnimationListener(new Animation.AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    // TODO Auto-generated method stub

                    removeThisItem(); 
                    notifyDataSetChanged(); 


                }
            });

            rc.startAnimation(anim);

        }
    });


    return convertView;
}

The second version leads to this error:

06-13 11:01:59.957: E/AndroidRuntime(1045): FATAL EXCEPTION: main
06-13 11:01:59.957: E/AndroidRuntime(1045): java.lang.NullPointerException
06-13 11:01:59.957: E/AndroidRuntime(1045):     at com.tonicartos.widget.stickygridheaders.StickyGridHeadersGridView.dispatchDraw(StickyGridHeadersGridView.java:774)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.View.draw(View.java:11180)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.widget.AbsListView.draw(AbsListView.java:3769)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.drawChild(ViewGroup.java:2895)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2497)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.drawChild(ViewGroup.java:2893)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2497)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.drawChild(ViewGroup.java:2893)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2497)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.drawChild(ViewGroup.java:2893)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2497)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.View.draw(View.java:11180)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.support.v4.view.ViewPager.draw(ViewPager.java:1574)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.drawChild(ViewGroup.java:2895)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2497)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.View.draw(View.java:11180)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.widget.FrameLayout.draw(FrameLayout.java:450)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.drawChild(ViewGroup.java:2895)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2497)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.drawChild(ViewGroup.java:2893)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2497)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.View.draw(View.java:11180)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.widget.FrameLayout.draw(FrameLayout.java:450)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2295)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewRootImpl.draw(ViewRootImpl.java:2231)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1837)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2649)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.os.Looper.loop(Looper.java:137)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at android.app.ActivityThread.main(ActivityThread.java:4507)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at java.lang.reflect.Method.invokeNative(Native Method)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at java.lang.reflect.Method.invoke(Method.java:511)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
06-13 11:01:59.957: E/AndroidRuntime(1045):     at dalvik.system.NativeStart.main(Native Method)

I don't really get what the inflated layout for the item has to do with the GridHeader. Any ideas pleas? :)

fweigl
  • 21,278
  • 20
  • 114
  • 205

1 Answers1

0

initialaise the ctx with this, after that you can use this

DetailsAdapter(MainActivity.this)

public DetailsAdapter(MainActivity ctx) {

        mInflater = LayoutInflater.from(ctx.getBaseContext());
    }

    Animation anim = AnimationUtils.loadAnimation(ctx,
                        android.R.anim.slide_out_right);
Sunil Kumar
  • 7,086
  • 4
  • 32
  • 50
  • This is happening inside an adapter, so ctx = this wont work. ctx is being given to the adapter from an Activity though, and it works everywhere else in the adapter. – fweigl Jun 13 '13 at 09:46
  • Tried it, same result. Thanks for your effort though. – fweigl Jun 13 '13 at 10:20