2017-12-19 14 views
1

많은 질문을 통해 스크롤되었지만 그 중 일부를 찾지 못했거나 비특이적 인 답변을 찾았습니다.아이템 양식 삭제 ListView에서 DB가 누락되었습니다.

그래서 SQLite 데이터베이스가 있고 그 내용을 ListView에 표시합니다. 데이터베이스의 내용을 추출하여 문자열로 표시합니다. 지금 나는 항목 중 하나를 클릭하면 데이터베이스에서 삭제하고 싶습니다. 그래서 나는 OnItemClick 어댑터를 사용해야한다는 것을 알았습니다. 하지만 내가 클릭 한 항목을 가져올 수 및 ListView에서 문자열 뒤에있는 개체를 다음 데이터베이스를 그것을 삭제하려면 전달할? 이리스트 뷰에있는 데이터를 표시하는 나의 방법이다

Greatings

List<TaskData> TaskList = datasource.getAllTasks(); 
    //Daten werden im ArrayAdapter gespeichert 
    ArrayAdapter<TaskData> TaskListArrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_multiple_choice, TaskList); 

    ListView TaskDataListView = (ListView) findViewById(R.id.TaskListView); 
    TaskDataListView.setAdapter(TaskListArrayAdapter); 
    TaskDataListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      datasource.open(); 
      datasource.deleteTask(); 
      datasource.close(); 
     } 
    }); 
} 

이것은 onItemClick 방법 내에서 내 TaskData 클래스

public class TaskData { 
public long id; 
public String type; 
public String name; 
public String owner; 
public String expiration; 

public TaskData(long id, String type, String name, String owner, String expiration) { 
    this.id = id; 
    this.type = type; 
    this.name = name; 
    this.owner = owner; 
    this.expiration = expiration; 
} 

public String toString() { 
    return " Typ: " + type + " Name: " + name + " Owner: " + owner + " Until: " + expiration; 
} 
public long getId(){return id;} 

}

+0

당신이 당신의 코드를 추가 할 수 있습니다 당신에게 – R2R

+0

사용할 수 있도록하는 데 도움이 가능한 경우 데이터 나 사용하는 사용자 정의와 절 어댑터 –

+0

코드를 추가했습니다. –

답변

1

입니다 위치은 클릭 된 항목의 위치가됩니다. 이는 클릭 된 Tasklist의 색인 (요소)과 동일합니다.

long clickedid = TaskList.get(position).getId();을 사용하면 작업의 ID를 검색 할 수 있습니다. ?를 deleteTask 방법은 행을 식별하기 위해 ID를 사용 후 삭제되는 것을 가정

또는 -

 datasource.deleteTask(TaskList.get(position).getid());