本文将介绍如何实现一个简易备忘录,具有增删改查功能,备忘录实现效果:
实现思路:
1、MainActivity中主要用recyclerView来展示备忘录列表,用户可以添加新的备忘录,单机item可以修改备忘录中内容,长按item可以删除备忘录
2、EditActivity:主要用来编辑新创建的备忘录
3、AmendActivity:主要用来修改备忘录中的内容
源码:
(有添加新的功能!)
源码地址
MainActivity:
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private ImageView mAddBtn;
private RecyclerView mDataList;
private DatabaseHelper mHelper;
private MemoDataAdapter mMemoDataAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
initEvent();
}
/**
* 初始化数据
*/
private void initData() {
//获取数据库中的内容
List<Record> recordList = new ArrayList<>();
SQLiteDatabase db = mHelper.getReadableDatabase();
Cursor cursor = db.query(Constants.TABLE_NAME, null, null, null, null, null, null);
while (cursor.moveToNext()) {
Record record = new Record();
//遍历数据库中的全部内容
int id = cursor.getInt(cursor.getColumnIndex(Constants.MEMO_ID));
String title = cursor.getString(cursor.getColumnIndex(Constants.MEMO_TITLE));
String body = cursor.getString(cursor.getColumnIndex(Constants.MEMO_BODY));
Log.d(TAG, "id is " + id);
Log.d(TAG, "title is " + title);
Log.d(TAG, "body is " + body);
record.setId(id);
record.setTitleName(title);
record.setTextBody(body);
recordList.add(record);
Log.d(TAG, "success");
}
//此时成功遍历数据库中的数据
//将数据设置到adapter中显示出来
mMemoDataAdapter.setData(recordList);
Log.d(TAG, "size is " + recordList.size());
cursor.close();
db.close();
}
/**
* 设置点击事件
*/
private void initEvent() {
//点击按钮跳转至编辑界面
mAddBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, EditActivity.class);
startActivity(intent);
}
});
//点击item跳转到编辑界面
mMemoDataAdapter.setOnItemClickLinstener(new MemoDataAdapter.OnItemClickLinstener() {
@Override
public void onClick(int position, String title, String body) {
Toast.makeText(MainActivity.this, "clicked..." + position, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, AmendActivity.class);
//将数据显示在amendActivity中
Bundle bundle = new Bundle();
bundle.putInt(Constants.MEMO_ID, position + 1);
bundle.putString(Constants.MEMO_TITLE, title);
bundle.putString(Constants.MEMO_BODY, body);
intent.putExtras(bundle);
startActivity(intent);
}
});
//长按item删除
mMemoDataAdapter.setOnItemLongClickLinstener(new MemoDataAdapter.OnItemLongClickListener() {
@Override
public void onLongClick(int position, String title, String body) {
Toast.makeText(MainActivity.this, "long click", Toast.LENGTH_SHORT).show();
//提示dialog
Record record = new Record();
record.setTitleName(title);
record.setTextBody(body);
record.setId(position);
Log.d(TAG, "id is " + position);
Log.d(TAG, "title is " + title);
Log.d(TAG, "body is " + body);
showDialog(position, record);
}
});
}
/**
* 提示dialog是否删除该记录
*
* @param position
* @param record
*/
private void showDialog(final int position, final Record record) {
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("提示:");
dialog.setMessage("是否删除当前记录");
dialog.setPositiveButton("删除", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d(TAG, "删除");
//删除数据库中的记录
doDelete(position, record);
}
});
dialog.setNegativeButton