2016-03-15 52 views
1

我有一個CustomAdapter工作正常。 Adapter將數據插入我的Android GridView。 現在我希望當一個項目被選中時BackGroundItem變爲白色,並且當其他項目被選中時,前一個選中的項目顏色chage爲GridView背景,我的意思是隻有SingleChoiceMode。 我已經寫了這個:更改GridView項目BackGround當未選中

 gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      if(gridView.isItemChecked(position)) { 
       view = gridView.getChildAt(position); 
       view.setBackgroundColor(Color.WHITE); 
      }else { 
       view = gridView.getChildAt(position); 
       view.setBackgroundColor(124333); //the color code is the background color of GridView 
      } 
     } 
    }); 

但就在第一If作品,這意味着當我選擇一排,顏色變化爲白色,但是當我選擇其他行,前面的依然是白色的,新的選擇也是白色的。 我該寫什麼else statement

回答

0

您需要在每次您在GridView的任何項目按下刷新時間打電話給adapter.notifyDataSetChanged();GridView

 @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      adapter.notifyDataSetChanged(); // call it here 
      if(gridView.isItemChecked(position)) { 
       view = gridView.getChildAt(position); 
       view.setBackgroundColor(Color.WHITE); 
      }else { 
       view = gridView.getChildAt(position); 
       view.setBackgroundColor(124333); //the color code is the background color of GridView 
      } 
     } 

如果你只是想改變所選項目的顏色GridView,你可以使用android:listSelectorGridView xml

<GridView 
    ... 
    android:listSelector="#ff0000" > 
</GridView> 
+0

Thx alot Dude。 我使用了XML。 –

相關問題