2017-01-11 7 views
0

WHITE 텍스트 색상과 BLACK 텍스트 색상을 가진 일부 요소를 가진 ListView을 만들고 싶습니다.ListView 한 줄의 색상 변경

여기 지금 내 코드입니다 :

ArrayAdapter<String> arrayAdapter = 
new ArrayAdapter<String>(My_Activity.this, R.layout.row_lay, R.id.textViewList, myarray); 
listLead.setAdapter(arrayAdapter); 

내가 내 R.layout.row_lay의 텍스트 색상을 수정할 수 있지만 내 ListView에 모든 라인의 색상을 변경합니다. 예를 들어, 한 줄에는 색상을, 다른 한 줄에는 다른 색상을 어떻게 할 수 있습니까? 달성 할 수 있습니까? 동일한 ListView에서 다른 TextColor?

예인 경우 어떻게합니까?

답변

2

당신은 ArrayAdapter을 확장하는 사용자 정의 어댑터 클래스를 작성 ArrayAdapter

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(My_Activity.this, R.layout.row_lay, R.id.textViewList, myarray) { 

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

    //your condition logic 
    v.setBackgroundColor(yourColor); 

    return v; 
    } 
}; 
+0

보기 재활용으로 인해 조건이 충족되지 않을 때 원본 색상으로 다시 설정해야합니다. 그렇지 않으면 스크롤 할 때 특수 조건을 충족하는 것처럼 모두 색이 나타납니다. – NameSpace

+0

@NameSpace 맞습니다. 다시 설정해야합니다. 그러나 나는 OP의 조건 논리를 알지 못합니다. 그래서 당신이'// 당신의 조건 논리 '라고 말했고 OP는 한 행의 색상을 변경하는 방법을 물었습니다. 그리고 이것이 당신이하는 방법입니다. – Pztar

+0

답변을 시도하고 있지만 오류가 발생했습니다. 질문이 업로드되었습니다. – GMX

1

getView 메소드를 오버라이드 (override)가 있고, 그래서 같이 getView을 재정의 할 겁니다 : R.id.my_textview_id이를 어디

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

    TextView text = (TextView) v.findViewById(R.id.my_textview_id); 
    if (position == whiteColoredPosition){ 
     text.setTextColor(Color.WHITE); 
    } else { 
     text.setTextColor(Color.BLACK); 
    } 

    return v; 
} 

을 ID가 TextView이고 whiteColoredPosition이면 ListView에서 흰색으로 표시하려는 TextView가 포함 된 위치입니다.

+0

Upvoted 너무 유용했기 때문에 – GMX