概要:データベースとしてSQLiteを使ったサンプルメモアプリを作成しています。notifyDataSetChanged()を使用します。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
lv = (ListView)findViewById(R.id.memo_list_view);
Cursor c = SplashActivity.db.rawQuery("SELECT * FROM memos", null);
if(c.getCount()!=0) {
while(c.moveToNext()) {
memoDetails = new MemoDetails();
memoDetails.setmMemoId(c.getString(0));
memoDetails.setmMemoTitle(c.getString(1));
memoDetails.setmCreatedDate(c.getString(3));
memoDetails.setmAlarmedDate(c.getString(4));
memos.add(memoDetails);
}
c.close();
customAdapter = new CustomAdapter(this, memos);
lv.setAdapter(customAdapter);
}
@Override
protected void onResume() {
super.onResume();
customAdapter.notifyDataSetChanged();
}
MainActivityはその後、これは、この「追加で、私は私のメモを追加する活動
AddMemoActivity(これは私が使用してリスナーです)
saveMemo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v1) {
if(memoTitle.getText().toString().trim().length() == 0 ||
memoContent.getText().toString().trim().length() == 0) {
showMessage("Error", "Please Enter All Values");
} else {
SimpleDateFormat sdf = new SimpleDateFormat("MMMM dd, yyyy HH:mm:ss");
String currentDateandTime = sdf.format(new Date());
SplashActivity.db.execSQL("INSERT INTO memos VALUES(null,'"
+ memoTitle.getText() + "','"
+ memoContent.getText() + "','"
+ currentDateandTime + "','"
+ currentDateandTime + "','0');");
showMessage("Success", "Memo is Saved.");
}
}
});
ですメモ "部分、私の問題は私が私を残すときです。AddMemoActと私のMainActivtyに戻ると、私のリストビューは更新されません。あなたが見ることができるように
第二には私の削除一部、
MainActivity
findViewById(R.id.del_memo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v1) {
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
String deleteIds = null;
for (MemoDetails p : customAdapter.getBox()) {
if (p.mCheckBox){
if(deleteIds == null) {
deleteIds = p.getmMemoId();
} else {
deleteIds += ", " + p.getmMemoId();
}
}
}
SplashActivity.db.execSQL("DELETE FROM memos WHERE id IN ('"+deleteIds+"')");
customAdapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), deleteIds,
Toast.LENGTH_LONG).show();
break;
case DialogInterface.BUTTON_NEGATIVE:
//No button clicked
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(MemoListActivity.this);
builder.setMessage("Are you sure?").setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("No", dialogClickListener).show();
}
});
ですが、私はすでに)(customAdapter.notifyDataSetChangedを追加しました。が削除されたが、まだ更新されていない。
ありがとうございます。