4

私は、LinearLayoutの子供(それぞれImageViewとTextView)をカスタムギャラリーにフックアップした拡張BaseAdapterを持っています。Android:カスタムギャラリーsetSelection()の問題

アクティビティを最初に起動したときに、setSelection(position)に電話して、ImageViewでセレクタを「選択済み」イメージに変更する必要があります。これは、後で選択された子供たちがギャラリーを飛ばした後には機能しますが、アプリが初めて起動されるときではありません。

マイセレクター:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_selected="true" 
    android:drawable="@drawable/home_image_select" /> 
<item android:state_selected="false" 
    android:drawable="@drawable/home_image" /> 
</selector> 

私の最初の推測では、私はこのように行うことを試みている、()setSelectionを呼び出した後、アダプタにnotifyDataSetChanged()を呼び出すようにした。

((CustomAdapter) gallery.getAdapter()).notifyDataSetChanged(); 

」didnの何もしない。私はまた、これを行うためにGalleryクラスのsetSelection()をオーバーライドすることを試みました:

View v = this.getAdapter().getView(position, null, this);  
((ImageView) v.findViewById(R.id.gallery_image)).setSelected(true); 

これは動作しません。私は行方不明か試してみることができますか?

答えて

0

ギャラリーのsetSelection()を上書きすることで、私自身の問題を解決しました。

@Override 
public void setSelection(int position) { 
    super.setSelection(position); 

    View v = this.getAdapter().getView(position, null, this); 
    v.setFocusable(true); 
    v.requestFocus(); 
} 
0

私は、基礎となるデータセットが変更されたときに選択状態が解除され、あなたがnotifyDataSetChanged()を呼ぶべきではないと思います。

ちょうどsetSelection(position)を呼び出して、私のアプリで動作します。