2013-06-20 2 views
0

간단한 문제인 것처럼 보이는 것에 대해 유감스럽게 생각합니다. 그러나 몇 시간 동안 해결책을 찾고 있었지만 지금은 더 이상 참을 수 없습니다.notifyDataSetChanged with SQLite

내 앱은 매우 간단합니다. 나는 SQLite는 DB에서 "작업"을 가지고, 나는이와 목록보기는 다음과 같이을 DB 채울 : 작업의 ArrayList에를 반환

_dataAdapter = new TaskAdapter(_c, _taskDAO.getTasks()); 
_listTask.setAdapter(_dataAdapter); 

합니다.

문제는 대화 상자를 클릭하여 작업을 제거하면 데이터베이스에서 제거되지만 여전히 화면에 표시되므로 listView를 새로 고쳐야하는 이유입니다.

case DialogInterface.BUTTON_NEUTRAL: 
       _taskDAO.removeTask(1); 
       _dataAdapter.notifyDataSetChanged(); 
       break; 

하지만 작동하지 않습니다. DB에서 작업을 제거하지만 어댑터에서는 제거하지 않기 때문에 발생한다고 생각합니다.하지만 확실하지는 않습니다. 어쨌든 누군가가 솔루션을 가지고 있다면 ...

답변

1

어댑터가 ArrayAdapter 또는 BaseAdapter 인 경우 ListView의 데이터 소스는 DB 자체가 아니라 어댑터에 제공하는 목록입니다.

당신은 당신의 어댑터의 데이터 소스를 업데이트해야합니다

는 다시

_dataAdapter.notifyDataSetChanged(); 

을 또 다른 해결책이 될 것입니다 전화 어댑터 (그에게 새로운 목록을 제공) :

_dataAdapter = null; 
_dataAdapter = new TaskAdapter(_c, _taskDAO.getTasks()); 
_listTask.setAdapter(_dataAdapter); 

그것이

0
희망이 도움을

시도,

(listName.getAdapter()).notifyDataSetChanged();