2014-01-24 3 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

어댑터 실행 후 특정 목록/그리드 항목의 배경을 설정하는 것은 좋지 않습니다. 가장 좋은 방법은 position.e.g를 식별하여 어댑터 자체에 설정하는 것입니다.

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 position, View convertView, ViewGroup parent) 메소드가 있습니다. 그렇다면 u가 나타날 위치는 – NullPointerException

+0

입니다.하지만 속성으로 무엇을 채워야합니까? int 위치는 논리적입니다. View convertView는 GridView처럼 보이지만 ViewGroup 상위 항목에는 무엇을 지정해야합니까? – Matt

관련 문제