1

this.getListView()SQLite データベースから適切に入力された ListActivity に、このメイン ListView (を使用して取得) があります。その項目 (エントリ) の 1 つをクリックすると、 を使用して別のアクティビティ A2 が呼び出されますstartActivityForResult()。ユーザーが ListActivity に戻ったときに、その単一のエントリをアニメーション化したいと思います。(だから私はonActivityResult()メソッドをオーバーライドする必要があると思います)

ウィンドウがフォーカスされ、リストが を使用して更新された後、単一のエントリをアニメーション化するにはどうすればよいnotifyDataSetChanged()ですか?

を使用してListView全体をアニメーション化することができました

getListView().setAnimation(anim)

そしてうまくいきました。しかし、私がするとき:

getListView().getChildAt(position).setAnimation(anim)

何も起こりません。

編集: これが私の onActivityResult コードです

protected void onActivityResult(final int requestCode, final int resultCode, final Intent intent) {

    super.onActivityResult(requestCode, resultCode, intent);

    if(resultCode==RESULT_OK && requestCode==SOME_REQUEST_CODE){

        Animation anim = new AlphaAnimation(1.0f,0.0f);  
        anim.setFillAfter(true);  
        anim.setDuration(400); 
        anim.setRepeatMode(Animation.REVERSE);
        anim.setRepeatCount(7);
        // Just for testing, I chose the first item of the ListView (position=0)
        tr_adapter.getView(0, getListView().getChildAt(0), getListView()).setAnimation(anim);

        tr_adapter.notifyDataSetChanged(); //Nothing happens

    }

}
4

1 に答える 1

1

テーブルにフラグを設定notifyDataSetChanged()し、リスト アダプターを呼び出します。getView()テーブルのフラグに基づいて、リストアダプターで何をするか (アニメーション化するかしないか) を決定します。サンプルコードを投稿したいと思いますが、私はモバイルです。

編集


で、アニメーション化するデータ セット内のデータ ポイントにフラグを立てますonActivityResult()(何らかの値、ブール値、1/0 などを使用)。notifyDataSetChanged()次に、アダプターを呼び出します。カスタム リスト アダプターがあると仮定すると、getView()関数でアニメーションをオンまたはオフに切り替えます (または、デフォルトをオフにし、フラグを指定してオンに切り替えます)。

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

    // All the standard getView() stuff

    if (listitem.shouldAnimate())
        // animate
}
于 2012-12-31T02:37:26.893 に答える