ghita
ghita

Reputation: 2806

Remove GridView items one by one

enter image description here

I want to remove items from a gridView one by one. the problem is that are all removed once !

This is my code

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        boolean sw = false;
        while(!sw)
        {
            int i=0;

            if(!adapter.isEmpty())
            {
                adapter.removeItem(i);
                i+=1;
            } else sw = true;
        }
    }
}, 700);

in adapter I've created a remove function.. This it is

   public void removeItem(final int position)
    {
        data.remove(position);
        notifyDataSetChanged();
    }

Advices ?

Upvotes: 0

Views: 77

Answers (2)

Niko Adrianus Yuwono
Niko Adrianus Yuwono

Reputation: 11122

The problem is you are running all the remove in one go, try with this

public void removeAllItem()
{
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
        public void run() 
        {
            if(!adapter.isEmpty())
            {
                adapter.removeLastItem();
                removeAllItem();
            }
        } 
    }, 700);
}

and removeLastItem() is

public void removeLastItem()
{
    int lastIndex = data.size() - 1;
    data.remove(lastIndex);
    notifyDataSetChanged();
}

Which will remove every item from the last index every 700 miliseconds.

Upvotes: 1

user4571931
user4571931

Reputation:

Declare object in class level

boolean sw = false;

Change code like below

            while (!sw) {
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {

                    int i = 0;

                    if (!adapter.isEmpty()) {
                        adapter.removeItem(i);
                        i += 1;
                    } else sw = true;

                }
            }, 700);
          }

Hope it will help you !!

Upvotes: 0

Related Questions