2010-05-02 4 views
2

데이터베이스에서 ArrayList로 데이터를 읽는 ListAdapter에 바인딩 된 목록이있는 활동이 있습니다. 데이터가 처음로드 될 때 모두 정상입니다. Activity가 열려 있고 목록이 표시되는 동안 ArrayList가 변경 사항을 알지 못하기 때문에 데이터베이스의 데이터가 서비스에 의해 업데이트되지만 목록에 변경 내용이 반영되지 않을 가능성이 높습니다. 사용자가 홈 화면으로 이동 한 후 포어 그라운드로 다시 가져온 경우와 같이 액티비티가 더 이상 포어 그라운드에없는 경우, 액티비티는 이전에 수행 한 작업을 표시하지 않고 오히려 뷰가 바인드되고있는 ListAdapter입니다. finish()를 호출해야하지만 뭔가 확실하지 않습니다. 이것이 내가 활동에서 가지고있는 것입니다.사용자가 뒤로 버튼을 선택할 때 활동 저장 상태를 방지합니다.

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
setUpViews(); 
app = (MyApplication) getApplication(); 
adapter = new MyListAdapter(this, app.getMyEvents()); 
setListAdapter(adapter); 
} 
@Override 
protected void onResume() { 
super.onResume(); 
adapter.forceReload(); 
} 

답변

2

나는 데이터베이스에서의 ArrayList에 ListAdapter 데이터를 읽는 에 바인딩 있는 목록과 활동이있다.

모든 것을 ArrayAdapter으로 읽는 대신 CursorAdapter을 사용하지 않으시겠습니까?

활동은 열려 있고 리스트는 데이터베이스의 데이터가 서비스 업데이트됩니다 가능하고 가능성이 표시되어 있지만 목록에 ArrayList를 때문에 변경 사항이 반영되지 않지만 변경 사항에 대해 알 수 없습니다. 당신이 CursorAdapter를 사용한 경우

, 당신은 단지 Cursorrequery()를 호출 할 수 있고, 목록은 데이터베이스의 최신 내용으로 업데이트 할 것입니다. 예를 들어, onStart()에서 그 작업을 수행 할 수 있습니다. 홈 화면이나 걸려 오는 전화 통화 등 사용자가 다시 활동할 때마다 트리거됩니다.

+0

CursorAdaptor가 좋습니다. 감사 – JDM

관련 문제