parent
c26308db5d
commit
df4434b386
@ -0,0 +1,61 @@
|
|||||||
|
package com.example.noteapp281;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.EditText;
|
||||||
|
|
||||||
|
import com.example.noteapp281.bean.Note;
|
||||||
|
import com.example.noteapp281.util.ToastUtil;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class AddActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
private EditText etTitle,etContent;
|
||||||
|
|
||||||
|
private NoteDbOpenHelper mNoteDbOpenHelper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_add);
|
||||||
|
|
||||||
|
etTitle = findViewById(R.id.et_title);
|
||||||
|
etContent = findViewById(R.id.et_content);
|
||||||
|
mNoteDbOpenHelper = new NoteDbOpenHelper(this);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(View view) {
|
||||||
|
String title = etTitle.getText().toString();
|
||||||
|
String content = etContent.getText().toString();
|
||||||
|
if (TextUtils.isEmpty(title)) {
|
||||||
|
ToastUtil.toastShort(this, "标题不能为空!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Note note = new Note();
|
||||||
|
|
||||||
|
note.setTitle(title);
|
||||||
|
note.setContent(content);
|
||||||
|
note.setCreatedTime(getCurrentTimeFormat());
|
||||||
|
long row = mNoteDbOpenHelper.insertData(note);
|
||||||
|
if (row != -1) {
|
||||||
|
ToastUtil.toastShort(this,"添加成功!");
|
||||||
|
this.finish();
|
||||||
|
}else {
|
||||||
|
ToastUtil.toastShort(this,"添加失败!");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getCurrentTimeFormat() {
|
||||||
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY年MM月dd HH:mm:ss");
|
||||||
|
Date date = new Date();
|
||||||
|
return simpleDateFormat.format(date);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
package com.example.noteapp281;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.EditText;
|
||||||
|
|
||||||
|
import com.example.noteapp281.bean.Note;
|
||||||
|
import com.example.noteapp281.util.ToastUtil;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class EditActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
private Note note;
|
||||||
|
private EditText etTitle,etContent;
|
||||||
|
|
||||||
|
private NoteDbOpenHelper mNoteDbOpenHelper;
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_edit);
|
||||||
|
|
||||||
|
etTitle = findViewById(R.id.et_title);
|
||||||
|
etContent = findViewById(R.id.et_content);
|
||||||
|
|
||||||
|
initData();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initData() {
|
||||||
|
Intent intent = getIntent();
|
||||||
|
note = (Note) intent.getSerializableExtra("note");
|
||||||
|
if (note != null) {
|
||||||
|
etTitle.setText(note.getTitle());
|
||||||
|
etContent.setText(note.getContent());
|
||||||
|
}
|
||||||
|
mNoteDbOpenHelper = new NoteDbOpenHelper(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save(View view) {
|
||||||
|
String title = etTitle.getText().toString();
|
||||||
|
String content = etContent.getText().toString();
|
||||||
|
if (TextUtils.isEmpty(title)) {
|
||||||
|
ToastUtil.toastShort(this, "标题不能为空!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
note.setTitle(title);
|
||||||
|
note.setContent(content);
|
||||||
|
note.setCreatedTime(getCurrentTimeFormat());
|
||||||
|
long rowId = mNoteDbOpenHelper.updateData(note);
|
||||||
|
if (rowId != -1) {
|
||||||
|
ToastUtil.toastShort(this, "修改成功!");
|
||||||
|
this.finish();
|
||||||
|
}else{
|
||||||
|
ToastUtil.toastShort(this, "修改失败!");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getCurrentTimeFormat() {
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd日 HH:mm:ss");
|
||||||
|
Date date = new Date();
|
||||||
|
return sdf.format(date);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,191 @@
|
|||||||
|
package com.example.noteapp281;
|
||||||
|
|
||||||
|
import android.app.SearchManager;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.Menu;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.appcompat.widget.SearchView;
|
||||||
|
import androidx.recyclerview.widget.GridLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
import com.example.noteapp281.adapter.MyAdapter;
|
||||||
|
import com.example.noteapp281.bean.Note;
|
||||||
|
import com.example.noteapp281.util.SpfUtil;
|
||||||
|
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class MainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
private RecyclerView mRecyclerView;
|
||||||
|
private FloatingActionButton mBtnAdd;
|
||||||
|
private List<Note> mNotes;
|
||||||
|
private MyAdapter mMyAdapter;
|
||||||
|
|
||||||
|
private NoteDbOpenHelper mNoteDbOpenHelper;
|
||||||
|
|
||||||
|
public static final int MODE_LINEAR = 0;
|
||||||
|
public static final int MODE_GRID = 1;
|
||||||
|
|
||||||
|
public static final String KEY_LAYOUT_MODE = "key_layout_mode";
|
||||||
|
|
||||||
|
private int currentListLayoutMode = MODE_LINEAR;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_main);
|
||||||
|
initView();
|
||||||
|
initData();
|
||||||
|
initEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
refreshDataFromDb();
|
||||||
|
setListLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setListLayout() {
|
||||||
|
currentListLayoutMode = SpfUtil.getIntWithDefault(this, KEY_LAYOUT_MODE, MODE_LINEAR);
|
||||||
|
if (currentListLayoutMode == MODE_LINEAR) {
|
||||||
|
setToLinearList();
|
||||||
|
}else{
|
||||||
|
setToGridList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshDataFromDb() {
|
||||||
|
mNotes = getDataFromDB();
|
||||||
|
mMyAdapter.refreshData(mNotes);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initEvent() {
|
||||||
|
mMyAdapter = new MyAdapter(this, mNotes);
|
||||||
|
mRecyclerView.setAdapter(mMyAdapter);
|
||||||
|
// LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
|
||||||
|
// mRecyclerView.setLayoutManager(linearLayoutManager);
|
||||||
|
// mMyAdapter.setViewType(MyAdapter.TYPE_LINEAR_LAYOUT);
|
||||||
|
setListLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initData() {
|
||||||
|
mNotes = new ArrayList<>();
|
||||||
|
mNoteDbOpenHelper = new NoteDbOpenHelper(this);
|
||||||
|
//
|
||||||
|
// for (int i = 0; i < 30; i++) {
|
||||||
|
// Note note = new Note();
|
||||||
|
// note.setTitle("这是标题"+i);
|
||||||
|
// note.setContent("这是内容"+i);
|
||||||
|
// note.setCreatedTime(getCurrentTimeFormat());
|
||||||
|
// mNotes.add(note);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// mNotes = getDataFromDB();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Note> getDataFromDB() {
|
||||||
|
return mNoteDbOpenHelper.queryAllFromDb();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getCurrentTimeFormat() {
|
||||||
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd HH:mm:ss");
|
||||||
|
Date date = new Date();
|
||||||
|
return simpleDateFormat.format(date);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initView() {
|
||||||
|
mRecyclerView = findViewById(R.id.rlv);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void add(View view) {
|
||||||
|
Intent intent = new Intent(this, AddActivity.class);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
|
getMenuInflater().inflate(R.menu.menu_main, menu);
|
||||||
|
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
|
||||||
|
|
||||||
|
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onQueryTextSubmit(String query) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onQueryTextChange(String newText) {
|
||||||
|
mNotes = mNoteDbOpenHelper.queryFromDbByTitle(newText);
|
||||||
|
mMyAdapter.refreshData(mNotes);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return super.onCreateOptionsMenu(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
|
item.setChecked(true);
|
||||||
|
|
||||||
|
switch (item.getItemId()) {
|
||||||
|
|
||||||
|
case R.id.menu_linear:
|
||||||
|
setToLinearList();
|
||||||
|
currentListLayoutMode = MODE_LINEAR;
|
||||||
|
SpfUtil.saveInt(this,KEY_LAYOUT_MODE,MODE_LINEAR);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
case R.id.menu_grid:
|
||||||
|
|
||||||
|
setToGridList();
|
||||||
|
currentListLayoutMode = MODE_GRID;
|
||||||
|
SpfUtil.saveInt(this,KEY_LAYOUT_MODE,MODE_GRID);
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return super.onOptionsItemSelected(item);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setToLinearList() {
|
||||||
|
RecyclerView.LayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
|
||||||
|
mRecyclerView.setLayoutManager(linearLayoutManager);
|
||||||
|
mMyAdapter.setViewType(MyAdapter.TYPE_LINEAR_LAYOUT);
|
||||||
|
mMyAdapter.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void setToGridList() {
|
||||||
|
RecyclerView.LayoutManager gridLayoutManager = new GridLayoutManager(this, 2);
|
||||||
|
mRecyclerView.setLayoutManager(gridLayoutManager);
|
||||||
|
mMyAdapter.setViewType(MyAdapter.TYPE_GRID_LAYOUT);
|
||||||
|
mMyAdapter.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||||
|
if (currentListLayoutMode == MODE_LINEAR) {
|
||||||
|
MenuItem item = menu.findItem(R.id.menu_linear);
|
||||||
|
item.setChecked(true);
|
||||||
|
} else {
|
||||||
|
menu.findItem(R.id.menu_grid).setChecked(true);
|
||||||
|
}
|
||||||
|
return super.onPrepareOptionsMenu(menu);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,130 @@
|
|||||||
|
package com.example.noteapp281;
|
||||||
|
|
||||||
|
import android.content.ContentValues;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.database.Cursor;
|
||||||
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
|
import android.database.sqlite.SQLiteOpenHelper;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
import com.example.noteapp281.bean.Note;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class NoteDbOpenHelper extends SQLiteOpenHelper {
|
||||||
|
|
||||||
|
private static final String DB_NAME = "noteSQLite.db";
|
||||||
|
private static final String TABLE_NAME_NOTE = "note";
|
||||||
|
|
||||||
|
private static final String CREATE_TABLE_SQL = "create table " + TABLE_NAME_NOTE + " (id integer primary key autoincrement, title text, content text, create_time text)";
|
||||||
|
|
||||||
|
|
||||||
|
public NoteDbOpenHelper(Context context) {
|
||||||
|
super(context, DB_NAME, null, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(SQLiteDatabase db) {
|
||||||
|
db.execSQL(CREATE_TABLE_SQL);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public long insertData(Note note) {
|
||||||
|
|
||||||
|
SQLiteDatabase db = getWritableDatabase();
|
||||||
|
|
||||||
|
ContentValues values = new ContentValues();
|
||||||
|
values.put("title", note.getTitle());
|
||||||
|
values.put("content", note.getContent());
|
||||||
|
values.put("create_time", note.getCreatedTime());
|
||||||
|
|
||||||
|
return db.insert(TABLE_NAME_NOTE, null, values);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int deleteFromDbById(String id) {
|
||||||
|
SQLiteDatabase db = getWritableDatabase();
|
||||||
|
// return db.delete(TABLE_NAME_NOTE, "id = ?", new String[]{id});
|
||||||
|
// return db.delete(TABLE_NAME_NOTE, "id is ?", new String[]{id});
|
||||||
|
return db.delete(TABLE_NAME_NOTE, "id like ?", new String[]{id});
|
||||||
|
}
|
||||||
|
|
||||||
|
public int updateData(Note note) {
|
||||||
|
|
||||||
|
SQLiteDatabase db = getWritableDatabase();
|
||||||
|
|
||||||
|
ContentValues values = new ContentValues();
|
||||||
|
values.put("title", note.getTitle());
|
||||||
|
values.put("content", note.getContent());
|
||||||
|
values.put("create_time", note.getCreatedTime());
|
||||||
|
|
||||||
|
return db.update(TABLE_NAME_NOTE, values, "id like ?", new String[]{note.getId()});
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Note> queryAllFromDb() {
|
||||||
|
|
||||||
|
SQLiteDatabase db = getWritableDatabase();
|
||||||
|
List<Note> noteList = new ArrayList<>();
|
||||||
|
|
||||||
|
Cursor cursor = db.query(TABLE_NAME_NOTE, null, null, null, null, null, null);
|
||||||
|
if (cursor != null) {
|
||||||
|
while (cursor.moveToNext()) {
|
||||||
|
String id = cursor.getString(cursor.getColumnIndex("id"));
|
||||||
|
String title = cursor.getString(cursor.getColumnIndex("title"));
|
||||||
|
String content = cursor.getString(cursor.getColumnIndex("content"));
|
||||||
|
String createTime = cursor.getString(cursor.getColumnIndex("create_time"));
|
||||||
|
|
||||||
|
Note note = new Note();
|
||||||
|
note.setId(id);
|
||||||
|
note.setTitle(title);
|
||||||
|
note.setContent(content);
|
||||||
|
note.setCreatedTime(createTime);
|
||||||
|
|
||||||
|
noteList.add(note);
|
||||||
|
}
|
||||||
|
cursor.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
return noteList;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Note> queryFromDbByTitle(String title) {
|
||||||
|
if (TextUtils.isEmpty(title)) {
|
||||||
|
return queryAllFromDb();
|
||||||
|
}
|
||||||
|
|
||||||
|
SQLiteDatabase db = getWritableDatabase();
|
||||||
|
List<Note> noteList = new ArrayList<>();
|
||||||
|
|
||||||
|
Cursor cursor = db.query(TABLE_NAME_NOTE, null, "title like ?", new String[]{"%"+title+"%"}, null, null, null);
|
||||||
|
|
||||||
|
if (cursor != null) {
|
||||||
|
|
||||||
|
while (cursor.moveToNext()) {
|
||||||
|
String id = cursor.getString(cursor.getColumnIndex("id"));
|
||||||
|
String title2 = cursor.getString(cursor.getColumnIndex("title"));
|
||||||
|
String content = cursor.getString(cursor.getColumnIndex("content"));
|
||||||
|
String createTime = cursor.getString(cursor.getColumnIndex("create_time"));
|
||||||
|
|
||||||
|
Note note = new Note();
|
||||||
|
note.setId(id);
|
||||||
|
note.setTitle(title2);
|
||||||
|
note.setContent(content);
|
||||||
|
note.setCreatedTime(createTime);
|
||||||
|
noteList.add(note);
|
||||||
|
}
|
||||||
|
cursor.close();
|
||||||
|
}
|
||||||
|
return noteList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,230 @@
|
|||||||
|
package com.example.noteapp281.adapter;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
import com.example.noteapp281.EditActivity;
|
||||||
|
import com.example.noteapp281.NoteDbOpenHelper;
|
||||||
|
import com.example.noteapp281.R;
|
||||||
|
import com.example.noteapp281.bean.Note;
|
||||||
|
import com.example.noteapp281.util.ToastUtil;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||||
|
|
||||||
|
private List<Note> mBeanList;
|
||||||
|
private LayoutInflater mLayoutInflater;
|
||||||
|
private Context mContext;
|
||||||
|
|
||||||
|
private NoteDbOpenHelper mNoteDbOpenHelper;
|
||||||
|
|
||||||
|
private int viewType;
|
||||||
|
|
||||||
|
public static int TYPE_LINEAR_LAYOUT = 0;
|
||||||
|
public static int TYPE_GRID_LAYOUT = 1;
|
||||||
|
|
||||||
|
public MyAdapter(Context context, List<Note> mBeanList){
|
||||||
|
this.mBeanList = mBeanList;
|
||||||
|
this.mContext = context;
|
||||||
|
mLayoutInflater = LayoutInflater.from(mContext);
|
||||||
|
mNoteDbOpenHelper = new NoteDbOpenHelper(mContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setViewType(int viewType) {
|
||||||
|
this.viewType = viewType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemViewType(int position) {
|
||||||
|
return viewType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
|
if(viewType == TYPE_LINEAR_LAYOUT){
|
||||||
|
View view = mLayoutInflater.inflate(R.layout.list_item_layout, parent, false);
|
||||||
|
MyViewHolder myViewHolder = new MyViewHolder(view);
|
||||||
|
return myViewHolder;
|
||||||
|
}else if(viewType == TYPE_GRID_LAYOUT){
|
||||||
|
View view = mLayoutInflater.inflate(R.layout.list_item_grid_layout, parent, false);
|
||||||
|
MyGridViewHolder myGridViewHolder = new MyGridViewHolder(view);
|
||||||
|
return myGridViewHolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
|
if (holder == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(holder instanceof MyViewHolder){
|
||||||
|
bindMyViewHolder((MyViewHolder) holder, position);
|
||||||
|
} else if (holder instanceof MyGridViewHolder) {
|
||||||
|
bindGridViewHolder((MyGridViewHolder) holder, position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void bindMyViewHolder(MyViewHolder holder, int position) {
|
||||||
|
Note note = mBeanList.get(position);
|
||||||
|
holder.mTvTitle.setText(note.getTitle());
|
||||||
|
holder.mTvContent.setText(note.getContent());
|
||||||
|
holder.mTvTime.setText(note.getCreatedTime());
|
||||||
|
holder.rlContainer.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
|
||||||
|
Intent intent = new Intent(mContext, EditActivity.class);
|
||||||
|
intent.putExtra("note", note);
|
||||||
|
mContext.startActivity(intent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
holder.rlContainer.setOnLongClickListener(new View.OnLongClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onLongClick(View v) {
|
||||||
|
// 弹出弹窗
|
||||||
|
Dialog dialog = new Dialog(mContext, android.R.style.ThemeOverlay_Material_Dialog_Alert);
|
||||||
|
View dialogView = mLayoutInflater.inflate(R.layout.list_item_dialog_layout, null);
|
||||||
|
TextView tvDelete = dialogView.findViewById(R.id.tv_delete);
|
||||||
|
TextView tvEdit = dialogView.findViewById(R.id.tv_edit);
|
||||||
|
|
||||||
|
tvDelete.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
int row = mNoteDbOpenHelper.deleteFromDbById(note.getId());
|
||||||
|
if (row > 0) {
|
||||||
|
removeData(position);
|
||||||
|
}
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
tvEdit.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Intent intent = new Intent(mContext, EditActivity.class);
|
||||||
|
intent.putExtra("note", note);
|
||||||
|
mContext.startActivity(intent);
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dialog.setContentView(dialogView);
|
||||||
|
dialog.setCanceledOnTouchOutside(true);
|
||||||
|
dialog.show();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void bindGridViewHolder(MyGridViewHolder holder, int position) {
|
||||||
|
Note note = mBeanList.get(position);
|
||||||
|
holder.mTvTitle.setText(note.getTitle());
|
||||||
|
holder.mTvContent.setText(note.getContent());
|
||||||
|
holder.mTvTime.setText(note.getCreatedTime());
|
||||||
|
holder.rlContainer.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
|
||||||
|
Intent intent = new Intent(mContext, EditActivity.class);
|
||||||
|
intent.putExtra("note", note);
|
||||||
|
mContext.startActivity(intent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
holder.rlContainer.setOnLongClickListener(new View.OnLongClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onLongClick(View v) {
|
||||||
|
// 弹出弹窗
|
||||||
|
Dialog dialog = new Dialog(mContext, android.R.style.ThemeOverlay_Material_Dialog_Alert);
|
||||||
|
View dialogView = mLayoutInflater.inflate(R.layout.list_item_dialog_layout, null);
|
||||||
|
TextView tvDelete = dialogView.findViewById(R.id.tv_delete);
|
||||||
|
TextView tvEdit = dialogView.findViewById(R.id.tv_edit);
|
||||||
|
|
||||||
|
tvDelete.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
int row = mNoteDbOpenHelper.deleteFromDbById(note.getId());
|
||||||
|
if (row > 0) {
|
||||||
|
removeData(position);
|
||||||
|
}
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
tvEdit.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Intent intent = new Intent(mContext, EditActivity.class);
|
||||||
|
intent.putExtra("note", note);
|
||||||
|
mContext.startActivity(intent);
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dialog.setContentView(dialogView);
|
||||||
|
dialog.setCanceledOnTouchOutside(true);
|
||||||
|
dialog.show();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemCount() {
|
||||||
|
return mBeanList.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refreshData(List<Note> notes) {
|
||||||
|
this.mBeanList = notes;
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeData(int pos) {
|
||||||
|
mBeanList.remove(pos);
|
||||||
|
notifyItemRemoved(pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
class MyViewHolder extends RecyclerView.ViewHolder{
|
||||||
|
TextView mTvTitle;
|
||||||
|
TextView mTvContent;
|
||||||
|
TextView mTvTime;
|
||||||
|
ViewGroup rlContainer;
|
||||||
|
public MyViewHolder(@NonNull View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
this.mTvTitle = itemView.findViewById(R.id.tv_title);
|
||||||
|
this.mTvContent = itemView.findViewById(R.id.tv_content);
|
||||||
|
this.mTvTime = itemView.findViewById(R.id.tv_time);
|
||||||
|
this.rlContainer = itemView.findViewById(R.id.rl_item_container);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class MyGridViewHolder extends RecyclerView.ViewHolder{
|
||||||
|
|
||||||
|
TextView mTvTitle;
|
||||||
|
TextView mTvContent;
|
||||||
|
TextView mTvTime;
|
||||||
|
ViewGroup rlContainer;
|
||||||
|
|
||||||
|
public MyGridViewHolder(@NonNull View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
this.mTvTitle = itemView.findViewById(R.id.tv_title);
|
||||||
|
this.mTvContent = itemView.findViewById(R.id.tv_content);
|
||||||
|
this.mTvTime = itemView.findViewById(R.id.tv_time);
|
||||||
|
this.rlContainer = itemView.findViewById(R.id.rl_item_container);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
package com.example.noteapp281.bean;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public class Note implements Serializable {
|
||||||
|
|
||||||
|
private String title;
|
||||||
|
private String content;
|
||||||
|
private String createdTime;
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
|
||||||
|
public String getTitle() {
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTitle(String title) {
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getContent() {
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContent(String content) {
|
||||||
|
this.content = content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCreatedTime() {
|
||||||
|
return createdTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreatedTime(String createdTime) {
|
||||||
|
this.createdTime = createdTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Note{" +
|
||||||
|
"title='" + title + '\'' +
|
||||||
|
", content='" + content + '\'' +
|
||||||
|
", createdTime='" + createdTime + '\'' +
|
||||||
|
", id='" + id + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package com.example.noteapp281.util;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
|
||||||
|
public class SpfUtil {
|
||||||
|
|
||||||
|
private static String SPF_NAME = "noteSpf";
|
||||||
|
|
||||||
|
public static void saveString(Context context, String key, String value) {
|
||||||
|
SharedPreferences spf = context.getSharedPreferences(SPF_NAME, Context.MODE_PRIVATE);
|
||||||
|
SharedPreferences.Editor edit = spf.edit();
|
||||||
|
edit.putString(key, value);
|
||||||
|
edit.apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getString(Context context, String key) {
|
||||||
|
SharedPreferences spf = context.getSharedPreferences(SPF_NAME, Context.MODE_PRIVATE);
|
||||||
|
return spf.getString(key, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void saveInt(Context context, String key, int value) {
|
||||||
|
SharedPreferences spf = context.getSharedPreferences(SPF_NAME, Context.MODE_PRIVATE);
|
||||||
|
SharedPreferences.Editor edit = spf.edit();
|
||||||
|
edit.putInt(key, value);
|
||||||
|
edit.apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getInt(Context context, String key) {
|
||||||
|
SharedPreferences spf = context.getSharedPreferences(SPF_NAME, Context.MODE_PRIVATE);
|
||||||
|
return spf.getInt(key, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getIntWithDefault(Context context, String key, int defValue) {
|
||||||
|
SharedPreferences spf = context.getSharedPreferences(SPF_NAME, Context.MODE_PRIVATE);
|
||||||
|
return spf.getInt(key, defValue);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package com.example.noteapp281.util;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
public class ToastUtil {
|
||||||
|
|
||||||
|
public static void toastShort(Context context, String msg) {
|
||||||
|
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void toastLong(Context context, String msg) {
|
||||||
|
Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue