2014-01-24 115 views
0

我正在尝试更改GridView的背景颜色。这与此代码工作完美:获取GridView的不同单元格

GridView gv = (GridView) findViewById(R.id.gvSpeelveld); 
gv.setBackgroundColor(Color.RED); 

但现在我想改变不同的单元格的颜色。例如:第2行第2格应该是蓝色的。 我应该使用什么方法来获取特定位置上的GridView项目以更改颜色?

我试着用这些方法,但它并没有因此进行得很顺利,

//Attempt 1 
gv.getChildAt(1).setBackgroundColor(Color.BLUE); 
//Attempt 2 (returns data, not the whole object) 
gv.getItemAtPosition(5); 

我不同的单元格的内容怎么可以?

+0

在adpater中执行getView方法 – ramaral

回答

1

在执行适配器后,设置特定列表/网格项目的背景并不是一个好习惯。最好的方法是通过识别位置将其设置在适配器中。

class YourAdapter extends BaseAdapter<T>{ .... 

getView(int position, View convertView, ViewGroup parent){ 



View v = convertView; 
     ...... 



     if(position == your_postion){ 



        v.setbackground(Color.parseColor("#FF0000"); 
      } 

     } 

    } 
+0

并通过什么方式可以识别适配器中的位置? – Matt

+0

U可能已经使用适配器的gridview ..所以在那个适配器你有方法getView(int位置,查看convertView,ViewGroup父)。通过这种方式,你会得到我所看到的位置 – NullPointerException

+0

,但我应该填写什么属性? int位置是逻辑的,查看convertView看起来像是GridView,但应该给ViewGroup的父项? – Matt

相关问题