아주 간단한 덤프 및 표시 응용 프로그램을 만들고 있습니다. 새로 입력 한 데이터가 첫 번째 탭에있는 목록에 표시되는지 확인하고 싶습니다. 하지만 어디 requery() 장소를 모르겠다;다른 탭에서 새 작업을 추가 할 때 목록을 새로 고치려면 어디에서 requery()를 배치해야합니까?
다음은 첫 번째 탭의 코드입니다. (DB에서 데이터를 표시합니다.) 내가 시도
public class ListTask extends ListActivity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.list_task);
SQLiteDatabase db = openOrCreateDatabase("db_alist", 0, null);
db.execSQL("CREATE TABLE IF NOT EXISTS tbl_alist (_id INTEGER PRIMARY KEY AUTOINCREMENT, task_name VARCHAR, task_date DATE, task_details VARCHAR);");
Cursor c = db.rawQuery("SELECT _id, task_name, task_date FROM tbl_alist", null);
while(c.moveToNext()){
c.getString(c.getColumnIndex("task_name"));
c.getString(c.getColumnIndex("task_date"));
}
db.close();
String[] displayfields = new String[] {"task_name", "task_date"};
int[] displayviews = new int[] {android.R.id.text1, android.R.id.text2};
SimpleCursorAdapter sca = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, c, displayfields, displayviews);
this.setListAdapter(sca);
}
@Override
public void onResume(){
super.onResume();
System.out.println("Resume?");
}
@Override
public void onPause(){
super.onPause();
System.out.println("Paused?");
}}
(의사 코드 만)
public class{
Cursor c
public void onCreate(){
...
}
public void onResume(){
super.onResume();
c.requery();
}
}
및
public class{
SimpleCursorAdapter sca
public void onCreate(){
...
}
public void onResume(){
super.onResume();
sca.notifyDataSetChanged();
}
}
그러나 둘 다 작동하지 않는 일을! 뭔가 잘못되었습니다.
커서를 넣으면 c; onCreate() 전에 onResume()에 c.requery()를 넣으면이 탭에 아무 것도로드되지 않습니다. – ice3d
커서를 로컬 변수 대신 클래스 필드로 만들고 싶지 않으면 SimpleCursorAdapter가 있어야합니다. 이 경우 SimpleCursorAdapter에서'notifyDataSetChanged()'를 호출 할 것이다. 상쾌하게 다룰 것입니다. – codinguser
내 SimpleCursorAdapter를 로컬 변수로 넣고 onResume에서 sca.notifyDataSetChanged()를 시도했지만 여전히 아무 일도 일어나지 않았습니다. – ice3d