ListView에 내가 SimpleCursorAdapter에 전달하는 커서 느릅 나무에서 항목으로 채우는되어있는 ListView에있는 응용 프로그램을 시작하지만 때마다 나는이 항목을 다시있는 응용 프로그램을 열 때마다 복제된다 목록보기에 추가되어 계속 증가하고 있습니다. 내가 SimpleAdapter를 사용할 때, 나는 같은 것을 할 :항목은 내가 SimpleCursorAdapter는
@Override
public void onDestroy(){
super.onDestroy();
foobar.removeAll(foobar);
}
하지만 지금, 나는 데이터베이스 내용을 삭제하지 않기 때문에 방법 :
static final ArrayList<HashMap<String, String>> foobar = new
ArrayList<HashMap<String,String>>();
SimpleAdapter adapter = new SimpleAdapter(this, foobar, R.layout.list_item, String[] from, int[] to);
setListAdapter(adapter);
, 내 문제를 해결 다음 수행 SimpleCursorAdapter이 있으면 해결할 수 있습니까? 이 같은 : 지금은 setListAdapter (널) 또는 cursor.close(), 그리고 많은 다른,하지만 efect에도 시도했다
> SimpleCursorAdapter myadapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor, String[] from, int[] to);
...
이 hapen 나는 종료 할 때 응용 프로그램은 장치의 "뒤로"버튼을 사용합니다. "집"버튼을 누르면 다시 돌아올 때 같은 수의 항목이 있습니다. 따라서 "뒤로"버튼을 클릭 할 때마다 목록이 복제됩니다.
Kaediil의 대답 덕분에 해결되었습니다. 주석 처리 된 선은 내가 개선 한 것입니다. 구멍 클래스 :
public class DataBaseActivity extends ListActivity {
DataBaseMethods dbmet; //is the class that handle database and auxiliar methods working on it
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
dbmet = new DataBaseMethods(this);
Cursor mycursor= dbmet.getItems(); // 1. add new cursor
try{
if(!mycursor.moveToFirst()){ //2.check if there are items in the database
dbmet.addItems("Daniel","Son","Karate-kid");
dbmet.addItems("Silv", "Stalone", "Terminator");
dbmet.addItems("foo", "bar", "buz");
} //
showDatabaseContent();
}
finally{
dbmet.close();
}
}
public void showDatabaseContent(){
DataBaseMethods dbmet = new DataBaseMethods(this);
try{
Cursor cursor = dbmet.getItems();
SimpleCursorAdapter myadapter = new SimpleCursorAdapter(this, R.layout.item_list, cursor, dbmet.FROM, TO);
setListAdapter(myadapter);
}
finally{
dbmet.close();
}
}
귀하가 제시 한 코드에 문제가 없습니다 .. 귀하의 데이터가 "하드 코딩 된"것이므로 매번 데이터베이스에 저장하는 것이 좋습니다. db 헬퍼 클래스 또는 onCreate 아래에서 메서드를 호출하는 곳을 살펴보십시오. 코드를 게시 할 수 없다면 .. – Joe