mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
}
}
위와 같이 onItemClick에서 클리헀을 때 아래와 같이 하여 하이라이트 효과를 주고 있습니다.
for(int i=0; i<parent.getChildCount(); i++)
{
if(i == position)
{
parent.getChildAt(i).setBackgroundColor(Color.BLUE);
}
else
{
parent.getChildAt(i).setBackgroundColor(Color.BLACK);
}
}
문제는 parent.getChildCount로 가져오는 child의 갯수가 리스트 뷰 한 면에 나타나는 셀의 갯수 이더라구요.
30열이 있는데 첫번째 페이지에 12개가 들어가면.
parent.getChildCount는 12로 나오더라구요..
그렇게 되었을 때 12열 이후의 열은 처리가 불가능한 것인가요??
조언 부탁드립니다.
리스트뷰 아댑터에 들어간 item 클래스에 변수(boolean) 추가 하고 클릭 이벤트 발생했을때 반복문으로 클릭한 position 만 true, 나머진 false 한 다음
아댑터.노티파이셋데이터체인지(); 호출하세요. 그리고 아댑터 getView에서
publlic View getView(int position, View convertView, ViewGroup parent){
.......
if(itemlist.get(position).boolean){
convertView.setBackgroundColor(Color,BLUE);
}else{
convertView.setBackgroundColor(Color.BLACK);
}
}
그냥 v 인스턴스 갖다 쓰면 안 되나요? for문 다 없애고 v.setBack~~() 해도 될거같은데요.