리스트뷰 목록에서 지운후에 notifyDataSetChanged();를 사용해서 갱신을 하려고 하는데 화면에서 지워졌다가 뒤로가기 후에 다시 들어가면 다시 원래대로 돌아와버리는데 notifyDataSetChanged();가 작동을 안해서 그런것 같습니다ㅠ runOnUiThread? 같은거도 써봤는데 여전히 안돼요 ㅠ SQLite쓰고있습니다
DBHelper helper = new DBHelper(getApplicationContext(), "movie.db", null, 1);
SQLiteDatabase db = helper.getWritableDatabase();
helper.onCreate(db);
likelist = (ListView) findViewById(R.id.likeListView);
like = new ArrayList<>();
final TextView userName = (TextView) findViewById(R.id.userName);
arrAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, like);
likelist.setAdapter(arrAdapter);
final Cursor c = db.query("like", null, null, null, null, null, null, null);
while(c.moveToNext()) {
arrAdapter.add(c.getString(c.getColumnIndex("title")));
}
likelist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final int count;
final int[] checked = new int[1];
count = arrAdapter.getCount();
new AlertDialog.Builder(ProfileActivity.this)
.setTitle("취소").setMessage("삭제")
.setPositiveButton("삭제", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
if (count > 0) {
// 현재 선택된 아이템의 position 획득.
checked[0] = likelist.getCheckedItemPosition();
if (checked[0] > -1 && checked[0] < count) {
new Thread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
c.moveToPosition(checked[0]);
// 아이템 삭제
like.remove(c.getString(c.getColumnIndex("title")));
// listview 선택 초기화.
likelist.clearChoices();
// listview 갱신.
arrAdapter.notifyDataSetChanged();
}
});
}
}).start();
}
}
}
})
.setNegativeButton("취소", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.show();
}
});
reference 문제라고 하던데 잘 모르겠습니다 ㅠ