Wangzj
parent
33457fae49
commit
b89557e4e9
@ -1,61 +0,0 @@
|
|||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,71 +0,0 @@
|
|||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,191 +0,0 @@
|
|||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,130 +0,0 @@
|
|||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,230 +0,0 @@
|
|||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,54 +0,0 @@
|
|||||||
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 + '\'' +
|
|
||||||
'}';
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,15 +0,0 @@
|
|||||||
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