2011-07-12 53 views
0


我使用圖庫視圖與BaseAdapter
顯示字符串沒有問題,改變背景和文字顏色取決於項目狀態(選擇)

但我想僅當選擇了不同的項目時才更改背景和文本顏色,GalleryView項目狀態會隨着所選事件的變化而變化(當您自動選擇居中項目時)被調用

2個單詞中的背景mustn'如果物品沒有被點擊,則改變t
我該如何去使用它?更改項目狀態提拉 - 圖庫視圖

回答

2

您必須捕捉選定的事件並將視圖的背景更改爲未選中。 存儲上次點擊的位置以避免更改其選定的背景。此外,店內最後單擊視圖恢復未選擇的背景,當其他項目被點擊不丟:

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 
    }  
    }; 

如果它是爲時已晚,你Fluckysan至少希望它有助於誰是有同樣的問題的人。 快樂編碼!

+0

是的,我最終這樣做(海報我的決議在另一個線程:http://stackoverflow.com/questions/6580374/how-to-avoid-selector-while-dragging-image-in-gallery-in-android/6681005#6681005)。這不是很性感,但它的工作原理。謝謝你回答,雖然:) –

+0

好的Fluckysan,我很高興你找到了另一種解決方案。對於對我的答案感興趣的其他人,您還需要使用您的適配器使用最後點擊的位置更改背景。當最後一次點擊的位置從屏幕上消失並返回時,這會有很大幫助。我今天終於完成了100%的工作。 – crubio

+0

Fluckysan,你應該檢查一個答案來關閉這個問題:) – crubio

0

您必須使用屬性android:listSelector在xml中實現一個列表選擇器,然後將此樣式設置爲您的列表視圖。

+0

當選擇的項目改變時,列表選擇器改變背景圖像,如果一個圖庫,這是不可能的,如果你想要背景改變只有當該項目被點擊時 –