2011-07-12 8 views
0


私はアイテムの状態に応じて、背景とテキストの色(セレクタ)

を変更するには問題ありませBaseAdapter
で文字列を表示しないようにGalleryViewを使用しかし、私はしたいですアイテムがクリックされた場合にのみ背景やテキストの色を変更します。中心に表示されたアイテムが自動的に選択されたときに呼び出される選択されたイベントでGalleryViewアイテムの状態が変化します(中心のアイテムが自動的に選択されます)

2ワードで、アイテムがクリックされなかった場合は変更されません。
どうすればいいですか?変更アイテムの状態の描画可能 - GalleryView

答えて

2

選択したイベントをキャプチャし、ビューの背景を選択解除に変更する必要があります。 最後にクリックした位置を保存して、選択した背景を変更しないようにします。また、ストアが最後に別の項目がクリックされたときに投げつけせずに非選択の背景を復元するためにビューをクリックした:それはあなたFluckysanのために手遅れ場合

gallery = (Gallery) findViewById(R.id.gallery); 
    gallery.setAdapter(new DaysGalleryAdapter(this, new int[]{R.layout.gallery_item}, new int[]{R.id.tv_gallery})); 
    gallery.setOnItemClickListener(mOnGalleryClick); 
    gallery.setOnItemSelectedListener(new OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       if(position != savedClickedPosition) 
        view.setBackgroundResource(R.drawable.bg_unselected); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
      // TODO Auto-generated method stub 

      } 

    }); 

    private OnItemClickListener mOnGalleryClick = new OnItemClickListener(){ 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     lastItemSelected.setBackgroundResource(R.drawable.tab_bg_unselected); 
     view.setBackgroundResource(R.drawable.tab_bg_selected); 
     lastItemSelected = view; 
     savedClickedPosition = position; 
     // Do stuff 
    }  
    }; 

少なくともそれは同じ問題を抱えています誰にも役立ちます願っています。 ハッピーコーディング!

+0

うん、私はそれをやってしまう(別のスレッドで私の解決:http://stackoverflow.com/questions/6580374/how-to-avoid-selector-while-dragging-image-in-gallery-in-android/6681005#6681005)。それはあまりセクシーではありませんが、それは動作します。お返事ありがとうございます:) –

+0

Ok Fluckysan、私はあなたが別の解決策を見つけてうれしいです。私の答えに興味のある人は、最後にクリックした位置を使って背景を変更するためにアダプタを使う必要があります。これは、最後にクリックされた位置が画面から消えて戻ってくるときに役立ちます。ついに今日は100%働いています。 – crubio

+0

Fluckysan、問題を閉じるために答えをチェックする必要があります:) – crubio

0

xmlでリストセレクタを実装するには、属性android:listSelectorを使用し、このスタイルをリストビューに設定する必要があります。

+0

選択したアイテムが変更されたときに背景セレクタを変更します。ギャラリーの場合は、アイテムがクリックされた場合のみ –

関連する問題