그래서 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);
@ user3170934 : 취소 선 부분과 관련하여 '취소 선 통과'로 주변에서 원숭이를 칠해야합니다. – CommonsWare
@Collin FLynn : 올바르게 이해하면 TextView tv = this.listAdapter.getView (this.listView.getCount() - 1, null, this.listView)'를 입력하여 TextView 요소를 가져와야합니다. 그래, 그게 내 TextView 개체를 제공하지만, 내가이 사람에 대한 플래그를 설정하면 doView't 영향을 listView 및 listAdapter. listAdapter에게 어떻게 든 주어진 위치에서 뷰를 갱신하도록 지시해야합니까? – user3170934
@ user3170934 예, 어댑터에게보기를 업데이트하도록 지시해야합니다. 한 가지 방법은 'ViewHolder' 패턴을 사용하는 것입니다. 각 행에 대해 각'ViewHolder' 내부에 위치 int를 저장하도록하십시오. 행에 어떤 행이든 어떤 뷰 가든간에 매개 변수로 사용하는 메소드를 어댑터에 작성하십시오. 행에서 뷰 홀더를 잡고 위치 int를 검사하여 데이터 세트에있는 항목을 확인합니다. 어댑터 내부의 데이터 세트의 일부로 그 상태를 유지해야하고 getView 메소드 내부에서 전달할 뷰의 상태를 확인한 다음 구성하십시오. –