Android でカスタム ArrayAdapter を使用して ListView を実装しています。行レイアウトには TextView と ImageView が含まれており、行オブジェクトの状態に応じて ImageView をアニメーション化します。問題は、選択した行でアニメーションを開始すると、別の行を選択するまで実際にアニメーションが開始されないことです。以下は、私の getView メソッドの簡略版です。
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View rowView = convertView;
RowHolder holder = null;
Item item = items.get(position);
if(rowView == null)
{
rowView = _context.getLayoutInflater().inflate(R.layout.my_list, null);
holder = new RowHolder();
holder.title = (TextView)rowView.findViewById(R.id.title);
holder.imageView = (ImageView)rowView.findViewById(R.id.imageView);
}
else
{
holder = (RowHolder)rowView.getTag();
}
holder.title.setText(item.title);
if(item.status == ANIMATING)
{
holder.imageView.setVisiblity(View.VISIBLE);
Animation rotation = AnimationUtils.loadAnimation(getContext(), R.anim.button_rotate);
holder.imageView.startAnimation(rotation);
}
else
{
holder.imageView.clearAnimation();
holder.imageView.setVisibility(View.GONE);
}
return rowView;
}