2010-02-28 4 views
1

네이티브 MESSAGING 앱에서와 같이 ListView의 개별 행에 색을 지정할 수 있습니까? 단순히 행을 교대로 반복하고 싶지는 않지만 메시지 행에 메시지의 사용자 이름에 따라 다른 배경색이있는 MESSAGING 앱에서 사용 된 형식을 복사하고 싶습니다.MESSAGING 앱에서와 같이 ListView의 개별 행에 색상 코드를 지정하는 방법은 무엇입니까?

FYI : 현재 SimpleAdapter를 확장하고 getView (int position, View convertView, ViewGroup parent)를 재정의하고 있습니다. 이 방법에서는 위치를 기반으로 배경색을 설정하는 방법을 '위치 강조 표시'목록과 비교하여 계산하려고합니다. 목록을 업데이트 할 때마다이를 유지하지만, 지금까지는 처음으로 목록 만 작업하고 있습니다. 업데이트됩니다. 클래스에서

는 SimpleAdapter를 오버라이드 (override) :

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view = super.getView(position, convertView, parent); 

    if(highlightPositions.contains(new Integer(position))){ 
     view.setBackgroundColor(highlightColor);   
    } 
    else{ 
     view.setBackgroundColor(normalColor);  
    } 
    return view; 
} 

당신이 제공 할 수있는 지침을 주셔서 감사합니다!

답변

0

ListAdapter에서 notifyDataSetChanged()으로 전화해야한다고 생각합니다. 이렇게하면 재정의 된 getView() 메서드를 호출하여 목록을 새로 고칠 수 있습니다.

+0

예, 현재 진행중인 작업입니다. 문제는 각 업데이트에서 getView() 메서드가 호출되는 방식이 명확하지 않고 현재 원하는 목록의 위치에서 뷰의 배경색을 설정하는 것이 아니라 모두 동일한 값으로 설정하는 것입니다. 색깔. – JohnRock

+0

@johnrock : 디버거에서 getView() 메소드를 단계별로 실행하고 정확히 무슨 일이 일어나는지 확인할 수 있습니까? 그들은 모두 강조 색상으로 설정 되나요, 아니면 모두 정상 색상으로 설정됩니까? –

0

도움 주셔서 감사합니다. 사실, 제가 열거 한 코드는 실제로 작동합니다. 문제는 highlightPositions 목록에서 강조 표시 할 목록 위치를 추적하는 데 작은 실수로 드러났습니다. 일단 그것을 고치고 실제로 highlightPositions 목록에 실제로 강조 할 정확한 위치가 포함되어 있으면 제대로 작동합니다.

관련 문제