2010-07-15 3 views
1

다른 스타일 막대를 추가하기 위해 ArrayAdapter과 함께 사용하려는 ListView이 있습니다. 행은 내 응용 프로그램의 다른 상태에서 만들어지며 행의 스타일에 따라 색과 재료가 다른 상태에 따라 달라집니다. 생성에ArrayAdapter에 행을 추가하는 스타일 지정 ListView Android

: 여기서

일부 의사 코드이다 상이한 상태에서

mArrayAdapter = new ArrayAdapter(this, R.layout.message); 
mView = (ListView) findViewById(R.id.in); 
mView.setAdapter(mArrayAdapter); 

하는에 messageHandler을 사용하는 다른 스레드에 의해 트리거 메시지를 포함하는리스트에 행을 추가

mArrayAdapter.add("Message"); 

다른 상태에 따라 목록에서 메시지가 나타나지만 제대로 정렬되지 않았습니다. 이 작업을 수행하는 방법? 사용자 지정 Add() 메서드를 사용하여 ArrayAdapter 사용자 지정을 만드는 솔루션입니까?

답변

1

ArrayAdapter 사용자 지정을 만들고 getView() 메서드를 재정의해야합니다. 여기서 행에 다른 스타일을 적용할지 여부를 결정할 수 있습니다.

class CustomArrayAdapter extends ArrayAdapter { 
    CustomArrayAdapter() { 
     super(YourActivity.this, R.layout.message); 
    } 

    public View getView(int position, View convertView, 
              ViewGroup parent) { 
     View row=convertView; 

     if (row==null) {              
      LayoutInflater inflater=getLayoutInflater(); 

      row=inflater.inflate(R.layout.message, parent, false); 
     } 

     // e.g. if you have a TextView called in your row with ID 'label' 
     TextView label=(TextView)row.findViewById(R.id.label); 
     label.setText(items[position]); 

     // check the state of the row maybe using the variable 'position' 
     if(I do not actually know whats your criteria to change style){ 
      label.setTextColor(blablabla); 
     } 

     return(row); 
    } 
} 
+0

감사, 솜의 조정 후 마법처럼 작품 : 예를 들어! –

+0

새로운 문제가 있습니다. label.setTextColor()는 전체 레이블을 가져와 모든 행의 색상을 설정합니다. 목록에 이미있는 항목이 아니라 새 행에 색상을 설정해야합니다. –