Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Listview items Animation Stop While Scrolling

I am trying to show ProgressBar with a simple animation for each ListView item, but when I am scrolling, the ProgressBar animation stops. After scrolling ends the animation starts again. See image below.

Link
(source: axgig.com)

like image 625
Mojtaba Yeganeh Avatar asked May 25 '14 21:05

Mojtaba Yeganeh


3 Answers

you must use animation in getView() and set animation for convertView example :

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

    StructureArticles item = getItem(position);
    if (convertView == null) {
        convertView = G.inflater.inflate(R.layout.adapter_articles, parent, false);
        holder = new ViewHolder(convertView);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.fill(this, item, position);
    Animation animationListView = AnimationUtils.loadAnimation(context, R.anim.scale_fade_in);
    convertView.startAnimation(animationListView);

    return convertView;
}
like image 181
TAH62K Avatar answered Nov 16 '22 03:11

TAH62K


I used This Syntax in my Adapter And problem solved !

public class AdapterDownload extends ArrayAdapter<StructDownload> {

public AdapterDownload(ArrayList<StructDownload> array) {
    super(G.context, R.layout.item_layout, array);
}


private static class ViewHolder {

    public ViewHolder(View view)
    {

    }


    public void fill(final ArrayAdapter<StructDownload> adapter, final StructDownload item, final int position)
    {

    }
}


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

}

}

Thank You.

like image 39
Mojtaba Yeganeh Avatar answered Nov 16 '22 02:11

Mojtaba Yeganeh


It is stopping because getview is called again and again when list items are visible thus resetting the view to avoid any frame skips/lag on the devices..

what you need to do is to create a view holder with boolean and set it as a tag to the view.. each time is it animating boolean should be true and false when it stops.. so when getview is called your progressbar animation is still starting or stopping depending on the boolean..

like image 3
Rod_Algonquin Avatar answered Nov 16 '22 01:11

Rod_Algonquin