2011-03-23 13 views
1

나는 Array Adapter와 ArrayList로 작성된 간단한 listview를 가지고 있습니다.ListView의 텍스트 색상 변경

목록보기에서 특정 행에 액세스 한 다음 목록보기에서 해당 행에있는 텍스트보기의 텍스트 색을 변경하려면 어떻게해야합니까?

는 내가 텍스트 뷰의 텍스트 색상을 변경하지만 난 당신이 바꿀 수 귀하의 어댑터에, getView 방법 목록보기 사용자 지정 목록 항목과

답변

12

simple_list_item_1의 소스를 살펴보면 단순한 TextView임을 알 수 있습니다. 소스는 다음과 같습니다.

<sdk-dir>/platforms/<your-platform>/data/res/layout/simple_list_item_1 

ArrayAdapter 수퍼 클래스는 getView 메소드에서 TextView를 반환합니다. 즉, ArrayAdapter를 하위 클래스로 만들 수 있으며 하위 클래스의 getView 메소드 내부에서 수퍼 클래스에 체인을 연결하고 TextView로 반환하는 뷰를 캐스팅 할 수 있습니다.

public View getView(int position, View convertView, ViewGroup parent) { 
    TextView tv = (TextView) super.getView(position, convertView, parent); 

    if (position < 3) { 
    tv.setTextSize(24.0f); 
    } else { 
    tv.setTextSize(14.0f); 
    } 
    return tv; 
} 

당신이 simple_list_item_1보다 더 복잡한보기를 사용하는 경우, 당신은 할 수 있습니다 : 당신이 14 TEXTSIZE (24)와 나머지 목록의 처음 세 항목을 설정하기를 원한다면 예를 들어, 다음을 수행 할 수 소스를 검사하여 뷰에있는 요소의 ID를 파악한 다음 수퍼 클래스가 반환 한 뷰에서 findViewById를 호출합니다. 예를 들어, two_line_list_item.xml는 android.R.id.text1android.R.id.text2의 ID와 TextViews이 있으므로 다음과 같이 그들에 대한 핸들을 얻을 수 있어야 :

public View getView(int position, View convertView, ViewGroup parent) { 
    View v = super.getView(position, convertView, parent); 
    TextView tv1 = (TextView)v.findViewById(android.R.id.text1); 
    TextView tv2 = (TextView)v.findViewById(android.R.id.text2); 

    //do what you want with the TextViews 
} 
1

의 내부에 텍스트 뷰를 액세스하는 데 문제가이야하는 방법을 알고 findViewById(R.id.myText)을 호출하고 setTextColor을 호출하여 텍스트 색상을 쉽게 지정할 수 있습니다. 사실 당신은 내장 된 목록 항목으로 이것을 할 수 있습니다, 당신은 TextView의 ID를 알아야 할 것입니다 ... 나는 비공개는 아니지만 쉽게 찾을 수 있어야합니다.

표준 ListView 항목을 사용하는 경우 XML로 변경하려면 Applying Styles and Themes을 참조하여 텍스트 색을 변경하십시오.

+0

그래서 자바 파일에 그것을 할 방법이 없다? 일부 입력 값을 기반으로 동적으로 변경하려고했습니다 – au789

+0

사용자 정의 목록 항목을 사용하면 어댑터의 getView 메소드에서'findViewById (R.id.myText) '를 호출하고'setTextColor '. 실제로는 목록 항목을 사용하여이 작업을 수행 할 수 있습니다. TextView의 ID를 알아야합니다. –

+0

그래서 어레이 목록 및 어레이 어댑터로는 불가능하다고 말하고 있습니다. 사용자 지정 목록 항목을 만들어야하는 결과를 얻고 싶다면? – au789

관련 문제