2014-01-07 7 views
0

그래서 ListView 아이템에 취소 선을 적용하면서이 객체의 목록에서 데이터를 채우는 데 큰 문제가 있습니다.리스트 뷰 아이템을 취소하는 방법 ListView

private void setListItems() { 
     DatabaseHandler db = new DatabaseHandler(this); 
     List<ToDoTask> taskList = db.getAllTasks(); 

     for (ToDoTask tt : taskList) { 
      this.listAdapter.add(tt.getName()); 
     } 

     this.listAdapter.notifyDataSetChanged(); 
    } 

이 부분 코드는 내 ListView를 채 웁니다. 이제 항목에 취소 선을 추가하고 싶습니다.

tt.getActive() == 0 

ListView에서 TextView 항목을 가져 오는 방법을 모르겠습니다. 내 for 루프를 시도 :

TextView textView = (TextView) this.listView.getChildAt(this.listView.getCount() -1); 

하지만 응용 프로그램이 충돌합니다. 내 응용 프로그램 충돌하지 않은 유일한 해결책이었다 :

TextView textView = this.listAdapter.getView(this.listView.getCount() -1, null, null) 

하지만 실제로 ListView에 아무것도 변경하지 않았다. 나는 그것이 객체 자체를 참조하지 않는다고 생각한다.

this.listView = (ListView) findViewById(R.id.listViewItem); 
    this.listItems = new ArrayList<String>(); 
    this.listAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, this.listItems); 
    this.listView.setAdapter(this.listAdapter); 

답변

2

목록보기 인스턴스 또는 포함 된 뷰의 기본 상태를 수정 담당되지 않습니다 : 여기 내 변수를 인스턴스화하는 코드입니다. 그것이 어댑터의 일입니다. ListView를 스크롤하면 어댑터 메소드 getView()이 호출되고 어댑터는이를 행으로 전달합니다 (화면 밖으로 스크롤 한 행의 재생 된 뷰일 수 있음).

getView() 메서드 내에서 어댑터는 기본 데이터 집합을 참조하고 필요에 따라 행을 수정해야합니다. 즉, 텍스트를 교차 시키거나 행 내용의 시각적 속성을 설정해야합니다.

+0

@ user3170934 : 취소 선 부분과 관련하여 '취소 선 통과'로 주변에서 원숭이를 칠해야합니다. – CommonsWare

+0

@Collin FLynn : 올바르게 이해하면 TextView tv = this.listAdapter.getView (this.listView.getCount() - 1, null, this.listView)'를 입력하여 TextView 요소를 가져와야합니다. 그래, 그게 내 TextView 개체를 제공하지만, 내가이 사람에 대한 플래그를 설정하면 doView't 영향을 listView 및 listAdapter. listAdapter에게 어떻게 든 주어진 위치에서 뷰를 갱신하도록 지시해야합니까? – user3170934

+0

@ user3170934 예, 어댑터에게보기를 업데이트하도록 지시해야합니다. 한 가지 방법은 'ViewHolder' 패턴을 사용하는 것입니다. 각 행에 대해 각'ViewHolder' 내부에 위치 int를 저장하도록하십시오. 행에 어떤 행이든 어떤 뷰 가든간에 매개 변수로 사용하는 메소드를 어댑터에 작성하십시오. 행에서 뷰 홀더를 잡고 위치 int를 검사하여 데이터 세트에있는 항목을 확인합니다. 어댑터 내부의 데이터 세트의 일부로 그 상태를 유지해야하고 getView 메소드 내부에서 전달할 뷰의 상태를 확인한 다음 구성하십시오. –