2016-03-15 53 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。 –

相关问题