diff --git a/doc/软件工程.pptx b/doc/软件工程.pptx new file mode 100644 index 0000000..6e8611d Binary files /dev/null and b/doc/软件工程.pptx differ diff --git a/doc/软件工程文档(2).docx b/doc/软件工程文档(2).docx new file mode 100644 index 0000000..224e9bd Binary files /dev/null and b/doc/软件工程文档(2).docx differ diff --git a/dome b/dome deleted file mode 100644 index e69de29..0000000 diff --git a/src/note1/.gitignore b/src/note1/.gitignore new file mode 100644 index 0000000..603b140 --- /dev/null +++ b/src/note1/.gitignore @@ -0,0 +1,14 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx diff --git a/src/note1/.idea/.gitignore b/src/note1/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/src/note1/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/src/note1/.idea/.name b/src/note1/.idea/.name new file mode 100644 index 0000000..6916a87 --- /dev/null +++ b/src/note1/.idea/.name @@ -0,0 +1 @@ +test004 \ No newline at end of file diff --git a/src/note1/.idea/codeStyles/Project.xml b/src/note1/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..681f41a --- /dev/null +++ b/src/note1/.idea/codeStyles/Project.xml @@ -0,0 +1,116 @@ + + + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+
+
\ No newline at end of file diff --git a/src/note1/.idea/compiler.xml b/src/note1/.idea/compiler.xml new file mode 100644 index 0000000..61a9130 --- /dev/null +++ b/src/note1/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/note1/.idea/gradle.xml b/src/note1/.idea/gradle.xml new file mode 100644 index 0000000..ddefafe --- /dev/null +++ b/src/note1/.idea/gradle.xml @@ -0,0 +1,25 @@ + + + + + + + \ No newline at end of file diff --git a/src/note1/.idea/jarRepositories.xml b/src/note1/.idea/jarRepositories.xml new file mode 100644 index 0000000..a5f05cd --- /dev/null +++ b/src/note1/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/note1/.idea/misc.xml b/src/note1/.idea/misc.xml new file mode 100644 index 0000000..3d67bca --- /dev/null +++ b/src/note1/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/src/note1/.idea/runConfigurations.xml b/src/note1/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/src/note1/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/src/note1/app/.gitignore b/src/note1/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/src/note1/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/src/note1/app/build.gradle b/src/note1/app/build.gradle new file mode 100644 index 0000000..2a631e9 --- /dev/null +++ b/src/note1/app/build.gradle @@ -0,0 +1,29 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 29 + buildToolsVersion "29.0.2" + defaultConfig { + applicationId "com.example.test004" + minSdkVersion 15 + targetSdkVersion 29 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' +} diff --git a/src/note1/app/proguard-rules.pro b/src/note1/app/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/src/note1/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/src/note1/app/src/androidTest/java/com/example/test004/ExampleInstrumentedTest.java b/src/note1/app/src/androidTest/java/com/example/test004/ExampleInstrumentedTest.java new file mode 100644 index 0000000..73395e3 --- /dev/null +++ b/src/note1/app/src/androidTest/java/com/example/test004/ExampleInstrumentedTest.java @@ -0,0 +1,27 @@ +package com.example.test004; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + + assertEquals("com.example.test004", appContext.getPackageName()); + } +} diff --git a/src/note1/app/src/main/AndroidManifest.xml b/src/note1/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..06f04ef --- /dev/null +++ b/src/note1/app/src/main/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/note1/app/src/main/java/com/example/test004/MainActivity.java b/src/note1/app/src/main/java/com/example/test004/MainActivity.java new file mode 100644 index 0000000..10c2c25 --- /dev/null +++ b/src/note1/app/src/main/java/com/example/test004/MainActivity.java @@ -0,0 +1,70 @@ +package com.example.test004; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import java.util.Map; + +public class MainActivity extends AppCompatActivity implements View.OnClickListener +{ + private EditText et_account; //账号输入框 + private EditText et_password; //密码输入框 + private Button btn_login; //登录按钮 + private Button btn_rgs; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + initView(); + Map userInfo = Save.getUserInfo(this); + if (userInfo != null) { + et_account.setText(userInfo.get("account")); //将获取的账号显示到界面上 + et_password.setText(userInfo.get("password")); //将获取的密码显示到界面上 + } + } + private void initView() { + et_account = (EditText) findViewById(R.id.et_account); + et_password = (EditText) findViewById(R.id.et_password); + btn_login = (Button) findViewById(R.id.btn_login); + btn_rgs=findViewById(R.id.btn_rgs); + //设置按钮的点击监听事件 + btn_login.setOnClickListener(this); + btn_rgs.setOnClickListener(this); + } + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_login: + //当点击登录按钮时,获取界面上输入的账号和密码 + String account = et_account.getText().toString().trim(); + String password = et_password.getText().toString(); + //检验输入的账号和密码是否为空 + if (TextUtils.isEmpty(account)) { + Toast.makeText(this, "请输入账号", Toast.LENGTH_SHORT).show(); + return; + } + if (TextUtils.isEmpty(password)) { + Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show(); + return; + } + Intent intent = new Intent(MainActivity.this, NotepadActivity.class); + startActivity(intent); + Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show(); + finish(); + break; + + case R.id.btn_rgs: + Intent intent2=new Intent(MainActivity.this,RegisterActivity.class); + startActivity(intent2); + break; + } + } +} + diff --git a/src/note1/app/src/main/java/com/example/test004/NotepadActivity.java b/src/note1/app/src/main/java/com/example/test004/NotepadActivity.java new file mode 100644 index 0000000..b298b8c --- /dev/null +++ b/src/note1/app/src/main/java/com/example/test004/NotepadActivity.java @@ -0,0 +1,182 @@ +package com.example.test004; + +import androidx.drawerlayout.widget.DrawerLayout; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.Gravity; +import android.view.View; +import android.widget.AdapterView; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.Toast; + +import com.example.test004.adapter.NotepadAdapter; +import com.example.test004.adapter.PersonAdapter; +import com.example.test004.bean.NotepadBean; +import com.example.test004.bean.PersonBean; +import com.example.test004.database.SQLiteHelper; + +import java.util.ArrayList; +import java.util.List; + +public class NotepadActivity extends Activity { + ListView listView; + List list; + List originalList; // 用于保存原始的便签列表 + SQLiteHelper mSQLiteHelper; + NotepadAdapter adapter; + private DrawerLayout drawerLayout; + private ListView listView2; + private ImageView left_menu; + private PersonAdapter personAdapter; + private EditText searchEditText; // 搜索框 + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_notepad); + //用于显示便签的列表 + listView = (ListView) findViewById(R.id.listview); + + ImageView add = (ImageView) findViewById(R.id.add); + add.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(NotepadActivity.this, + RecordActivity.class); + startActivityForResult(intent, 1); + } + }); + + searchEditText = findViewById(R.id.search_edit_text); // 初始化搜索框 + searchEditText.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + searchNotes(s.toString()); // 当输入框内容改变时,进行搜索 + } + + @Override + public void afterTextChanged(Editable s) { + } + }); + + initData(); + listView2 = findViewById(R.id.list2); + + initData2(); + drawerLayout = findViewById(R.id.drawer_layout); + left_menu = findViewById(R.id.left_menu); + left_menu.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + drawerLayout.openDrawer(Gravity.LEFT); + } + }); + + } + + protected void initData() { + mSQLiteHelper = new SQLiteHelper(this); //创建数据库 + showQueryData(); + originalList = new ArrayList<>(list); // 保存原始的便签列表 + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + NotepadBean notepadBean = list.get(position); + Intent intent = new Intent(NotepadActivity.this, RecordActivity.class); + intent.putExtra("id", notepadBean.getId()); + intent.putExtra("title", notepadBean.getTitle()); + intent.putExtra("content", notepadBean.getContent()); + intent.putExtra("time", notepadBean.getTime()); //记录的时间 + NotepadActivity.this.startActivityForResult(intent, 1); + } + }); + + listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { + @Override + public boolean onItemLongClick(AdapterView parent, View view, final int + position, long id) { + AlertDialog dialog; + AlertDialog.Builder builder = new AlertDialog.Builder(NotepadActivity.this) + .setMessage("是否删除此记录?") + .setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + NotepadBean notepadBean = list.get(position); + if (mSQLiteHelper.deleteData(notepadBean.getId())) { + list.remove(position); + adapter.notifyDataSetChanged(); + Toast.makeText(NotepadActivity.this, "删除成功", + Toast.LENGTH_SHORT).show(); + } + } + }) + .setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }); + dialog = builder.create(); + dialog.show(); + return true; + } + }); + + } + + private void showQueryData() { + if (list != null) { + list.clear(); + } + //从数据库中查询数据(保存的标签) + list = mSQLiteHelper.query(); + adapter = new NotepadAdapter(this, list); + listView.setAdapter(adapter); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == 1 && resultCode == 2) { + showQueryData(); + originalList = new ArrayList<>(list); // 更新原始列表 + } + } + + private void initData2() { //初始化菜单list + ArrayList list = new ArrayList(); + list.add(new PersonBean(1, R.drawable.qm, "个性签名")); + list.add(new PersonBean(2, R.drawable.mb, "我的目标")); + list.add(new PersonBean(3, R.drawable.xc, "我的相册")); + list.add(new PersonBean(4, R.drawable.qb, "我的钱包")); + personAdapter = new PersonAdapter(NotepadActivity.this, list); + listView2.setAdapter(personAdapter); + } + + private void searchNotes(String keyword) { + list.clear(); + if (keyword.isEmpty()) { + list.addAll(originalList); // 如果搜索框为空,显示原始列表 + } else { + for (NotepadBean note : originalList) { + if (note.getTitle().contains(keyword) || note.getContent().contains(keyword)) { + list.add(note); // 如果便签标题或内容包含关键词,添加到显示列表中 + } + } + } + adapter.notifyDataSetChanged(); // 通知适配器数据已改变 + } +} \ No newline at end of file diff --git a/src/note1/app/src/main/java/com/example/test004/RecordActivity.java b/src/note1/app/src/main/java/com/example/test004/RecordActivity.java new file mode 100644 index 0000000..9488274 --- /dev/null +++ b/src/note1/app/src/main/java/com/example/test004/RecordActivity.java @@ -0,0 +1,73 @@ +package com.example.test004; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.example.test004.database.SQLiteHelper; +import com.example.test004.bean.NotepadBean; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +public class RecordActivity extends AppCompatActivity { + private EditText titleEditText; + private EditText contentEditText; + private Button saveButton; + private SQLiteHelper mSQLiteHelper; + private int noteId; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_record); + + titleEditText = findViewById(R.id.title_edit_text); + contentEditText = findViewById(R.id.content_edit_text); + saveButton = findViewById(R.id.save_button); + mSQLiteHelper = new SQLiteHelper(this); + + Intent intent = getIntent(); + if (intent != null) { + noteId = intent.getIntExtra("id", -1); + if (noteId != -1) { + String title = intent.getStringExtra("title"); + String content = intent.getStringExtra("content"); + String time = intent.getStringExtra("time"); + titleEditText.setText(title); + contentEditText.setText(content); + } + } + + saveButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String title = titleEditText.getText().toString().trim(); + String content = contentEditText.getText().toString().trim(); + String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA).format(new Date()); + + if (noteId == -1) { + if (mSQLiteHelper.insertData(title, content, time)) { + Toast.makeText(RecordActivity.this, "保存成功", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(RecordActivity.this, "保存失败", Toast.LENGTH_SHORT).show(); + } + } else { + if (mSQLiteHelper.updateData(noteId, title, content, time)) { + Toast.makeText(RecordActivity.this, "更新成功", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(RecordActivity.this, "更新失败", Toast.LENGTH_SHORT).show(); + } + } + setResult(2); + finish(); + } + }); + } +} \ No newline at end of file diff --git a/src/note1/app/src/main/java/com/example/test004/RegisterActivity.java b/src/note1/app/src/main/java/com/example/test004/RegisterActivity.java new file mode 100644 index 0000000..e13d68e --- /dev/null +++ b/src/note1/app/src/main/java/com/example/test004/RegisterActivity.java @@ -0,0 +1,57 @@ +package com.example.test004; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +public class RegisterActivity extends AppCompatActivity { + private EditText et_account; //账号输入框 + private EditText et_password; //密码输入框 + private Button btn_register; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_register); + et_account = (EditText) findViewById(R.id.et_account); + et_password = (EditText) findViewById(R.id.et_password); + btn_register=findViewById(R.id.btn_regiter); + btn_register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + switch (v.getId()){ + case R.id.btn_regiter: + String account = et_account.getText().toString().trim(); + String password = et_password.getText().toString(); + //检验输入的账号和密码是否为空 + if (TextUtils.isEmpty(account)) { + Toast.makeText(RegisterActivity.this,"请输入手机号",Toast.LENGTH_SHORT); + return; + } + if (TextUtils.isEmpty(password)) { + Toast.makeText(RegisterActivity.this, "请输入密码", Toast.LENGTH_SHORT).show(); + return; + } + //保存用户信息 + + + boolean isSaveSuccess = Save.saveUserInfo(RegisterActivity.this, account, password); + if (isSaveSuccess) { + Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(RegisterActivity.this, "注册失败", Toast.LENGTH_SHORT).show(); + } + Intent intent=new Intent(); + finish(); + break; + } + + } + }); + } +} diff --git a/src/note1/app/src/main/java/com/example/test004/Save.java b/src/note1/app/src/main/java/com/example/test004/Save.java new file mode 100644 index 0000000..e8c2e38 --- /dev/null +++ b/src/note1/app/src/main/java/com/example/test004/Save.java @@ -0,0 +1,41 @@ +package com.example.test004; + +import android.content.Context; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; + +import java.util.HashMap; +import java.util.Map; + +public class Save { + // 保存账号和登录密码到data.xml文件中 + public static boolean saveUserInfo(Context context, String account, String password) { + SharedPreferences sp = context.getSharedPreferences("data", Context.MODE_PRIVATE); + SharedPreferences.Editor edit = sp.edit(); + edit.putString("userName", account); + edit.putString("pwd", password); + edit.commit(); + return true; + } + //从data.xml文件中获取存储的账号和密码 + public static Map getUserInfo(Context context) { + SharedPreferences sp = context.getSharedPreferences("data", Context.MODE_PRIVATE); + String account = sp.getString("userName", null); + String password = sp.getString("pwd", null); + Map userMap = new HashMap(); + userMap.put("account", account); + userMap.put("password", password); + return userMap; + } + private static SharedPreferences getPreference(Context context) { + return PreferenceManager.getDefaultSharedPreferences(context); + } + public static String getP(Context context,String account){ + SharedPreferences sp = context.getSharedPreferences("data", Context.MODE_PRIVATE); + if (sp == null) { + sp = getPreference(context); + } + //Toast.makeText(Save.this,) + return sp.getString(account, "error"); + } +} diff --git a/src/note1/app/src/main/java/com/example/test004/adapter/NotepadAdapter.java b/src/note1/app/src/main/java/com/example/test004/adapter/NotepadAdapter.java new file mode 100644 index 0000000..0ad1345 --- /dev/null +++ b/src/note1/app/src/main/java/com/example/test004/adapter/NotepadAdapter.java @@ -0,0 +1,66 @@ +package com.example.test004.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import com.example.test004.bean.NotepadBean; +import com.example.test004.R; + +import java.util.List; + +public class NotepadAdapter extends BaseAdapter { + private Context context; + private List list; + + public NotepadAdapter(Context context, List list) { + this.context = context; + this.list = list; + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int position) { + return list.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder holder; + if (convertView == null) { + convertView = LayoutInflater.from(context).inflate(R.layout.notepad_item_layout, parent, false); + holder = new ViewHolder(); + holder.titleTextView = convertView.findViewById(R.id.title_text_view); + holder.contentTextView = convertView.findViewById(R.id.content_text_view); + holder.timeTextView = convertView.findViewById(R.id.time_text_view); + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + + NotepadBean notepadBean = list.get(position); + holder.titleTextView.setText(notepadBean.getTitle()); + holder.contentTextView.setText(notepadBean.getContent()); + holder.timeTextView.setText(notepadBean.getTime()); + + return convertView; + } + + private static class ViewHolder { + TextView titleTextView; + TextView contentTextView; + TextView timeTextView; + } +} \ No newline at end of file diff --git a/src/note1/app/src/main/java/com/example/test004/adapter/PersonAdapter.java b/src/note1/app/src/main/java/com/example/test004/adapter/PersonAdapter.java new file mode 100644 index 0000000..6f9e3de --- /dev/null +++ b/src/note1/app/src/main/java/com/example/test004/adapter/PersonAdapter.java @@ -0,0 +1,65 @@ +package com.example.test004.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.example.test004.R; +import com.example.test004.bean.PersonBean; + +import java.util.List; + +public class PersonAdapter extends BaseAdapter { + private List list; + private LayoutInflater layoutInflater; + + public PersonAdapter(Context context, List list){ + this.layoutInflater=LayoutInflater.from(context); + this.list=list; + } + + @Override + public int getCount() { + return list==null?0:list.size(); + } + + @Override + public Object getItem(int position) { + return list.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder viewHolder; + if(convertView==null){ + convertView=layoutInflater.inflate(R.layout.person_item_layout,null); + viewHolder=new ViewHolder(convertView); + convertView.setTag(viewHolder); + } + else{ + viewHolder=(ViewHolder)convertView.getTag(); + } + PersonBean personIfo=(PersonBean)getItem(position); + viewHolder.imageView.setImageResource(personIfo.getImageView()); + viewHolder.textView.setText(personIfo.getText()); + return convertView; + } + + class ViewHolder{ + ImageView imageView; + TextView textView; + public ViewHolder(View view){ + imageView=view.findViewById(R.id.item_imageview2); + textView=view.findViewById(R.id.item_textview2); + } + } +} diff --git a/src/note1/app/src/main/java/com/example/test004/bean/NotepadBean.java b/src/note1/app/src/main/java/com/example/test004/bean/NotepadBean.java new file mode 100644 index 0000000..0014b1a --- /dev/null +++ b/src/note1/app/src/main/java/com/example/test004/bean/NotepadBean.java @@ -0,0 +1,40 @@ +package com.example.test004.bean; + +public class NotepadBean { + private int id; + private String title; + private String content; + private String time; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = 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 getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } +} \ No newline at end of file diff --git a/src/note1/app/src/main/java/com/example/test004/bean/PersonBean.java b/src/note1/app/src/main/java/com/example/test004/bean/PersonBean.java new file mode 100644 index 0000000..a1c787c --- /dev/null +++ b/src/note1/app/src/main/java/com/example/test004/bean/PersonBean.java @@ -0,0 +1,36 @@ +package com.example.test004.bean; + +public class PersonBean { + private int id; + private int imageView; + private String text; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getImageView() { + return imageView; + } + + public void setImageView(int imageView) { + this.imageView = imageView; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + public PersonBean(int id, int imageView, String text){ + this.id=id; + this.imageView=imageView; + this.text=text; + } +} diff --git a/src/note1/app/src/main/java/com/example/test004/database/SQLiteHelper.java b/src/note1/app/src/main/java/com/example/test004/database/SQLiteHelper.java new file mode 100644 index 0000000..41e2fb9 --- /dev/null +++ b/src/note1/app/src/main/java/com/example/test004/database/SQLiteHelper.java @@ -0,0 +1,83 @@ +package com.example.test004.database; + +import android.content.ContentValues; +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +import java.util.ArrayList; +import java.util.List; + +import com.example.test004.bean.NotepadBean; + +public class SQLiteHelper extends SQLiteOpenHelper { + public static final String DATABASE_TABLE = "notepad_table"; + public static final String NOTEPAD_ID = "id"; + public static final String NOTEPAD_TITLE = "title"; + public static final String NOTEPAD_CONTENT = "content"; + public static final String NOTEPAD_TIME = "time"; + + private static final String DATABASE_NAME = "notepad.db"; + private static final int DATABASE_VERSION = 1; + + private SQLiteDatabase sqLiteDatabase; + + public SQLiteHelper(Context context) { + super(context, DATABASE_NAME, null, DATABASE_VERSION); + sqLiteDatabase = this.getWritableDatabase(); + } + + @Override + public void onCreate(SQLiteDatabase db) { + String createTable = "CREATE TABLE " + DATABASE_TABLE + " (" + + NOTEPAD_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + + NOTEPAD_TITLE + " TEXT, " + + NOTEPAD_CONTENT + " TEXT, " + + NOTEPAD_TIME + " TEXT);"; + db.execSQL(createTable); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); + onCreate(db); + } + + public boolean insertData(String title, String content, String time) { + ContentValues contentValues = new ContentValues(); + contentValues.put(NOTEPAD_TITLE, title); + contentValues.put(NOTEPAD_CONTENT, content); + contentValues.put(NOTEPAD_TIME, time); + return sqLiteDatabase.insert(DATABASE_TABLE, null, contentValues) > 0; + } + + public List query() { + List list = new ArrayList<>(); + String sql = "SELECT * FROM " + DATABASE_TABLE; + android.database.Cursor cursor = sqLiteDatabase.rawQuery(sql, null); + if (cursor.moveToFirst()) { + do { + NotepadBean notepadBean = new NotepadBean(); + notepadBean.setId(cursor.getInt(cursor.getColumnIndex(NOTEPAD_ID))); + notepadBean.setTitle(cursor.getString(cursor.getColumnIndex(NOTEPAD_TITLE))); + notepadBean.setContent(cursor.getString(cursor.getColumnIndex(NOTEPAD_CONTENT))); + notepadBean.setTime(cursor.getString(cursor.getColumnIndex(NOTEPAD_TIME))); + list.add(notepadBean); + } while (cursor.moveToNext()); + } + cursor.close(); + return list; + } + + public boolean deleteData(int id) { + return sqLiteDatabase.delete(DATABASE_TABLE, NOTEPAD_ID + " = ?", new String[]{String.valueOf(id)}) > 0; + } + + public boolean updateData(int id, String title, String content, String time) { + ContentValues contentValues = new ContentValues(); + contentValues.put(NOTEPAD_TITLE, title); + contentValues.put(NOTEPAD_CONTENT, content); + contentValues.put(NOTEPAD_TIME, time); + return sqLiteDatabase.update(DATABASE_TABLE, contentValues, NOTEPAD_ID + " = ?", new String[]{String.valueOf(id)}) > 0; + } +} \ No newline at end of file diff --git a/src/note1/app/src/main/java/com/example/test004/utils/DBUtils.java b/src/note1/app/src/main/java/com/example/test004/utils/DBUtils.java new file mode 100644 index 0000000..58bb9dd --- /dev/null +++ b/src/note1/app/src/main/java/com/example/test004/utils/DBUtils.java @@ -0,0 +1,19 @@ +package com.example.test004.utils; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class DBUtils { + public static final String DATABASE_NAME = "Notepad";//数据库名 + public static final String DATABASE_TABLE = "Note"; //表名 + public static final int DATABASE_VERION = 1; //数据库版本 + //数据库表中的列名 + public static final String NOTEPAD_ID = "id"; + public static final String NOTEPAD_CONTENT = "content"; + public static final String NOTEPAD_TIME = "notetime"; + //获取当前日期 + public static final String getTime(){ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); + Date date = new Date(System.currentTimeMillis()); + return simpleDateFormat.format(date); + } +} diff --git a/src/note1/app/src/main/res/drawable-hdpi/add.png b/src/note1/app/src/main/res/drawable-hdpi/add.png new file mode 100644 index 0000000..e428777 Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/add.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/back.png b/src/note1/app/src/main/res/drawable-hdpi/back.png new file mode 100644 index 0000000..35bc7b0 Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/back.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/bg2.png b/src/note1/app/src/main/res/drawable-hdpi/bg2.png new file mode 100644 index 0000000..2fc02d6 Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/bg2.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/bg5.png b/src/note1/app/src/main/res/drawable-hdpi/bg5.png new file mode 100644 index 0000000..6cab993 Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/bg5.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/bg6.png b/src/note1/app/src/main/res/drawable-hdpi/bg6.png new file mode 100644 index 0000000..4c7d5b0 Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/bg6.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/bg7.png b/src/note1/app/src/main/res/drawable-hdpi/bg7.png new file mode 100644 index 0000000..e9251ba Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/bg7.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/bg8.png b/src/note1/app/src/main/res/drawable-hdpi/bg8.png new file mode 100644 index 0000000..2fc02d6 Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/bg8.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/btn1.png b/src/note1/app/src/main/res/drawable-hdpi/btn1.png new file mode 100644 index 0000000..b134eb9 Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/btn1.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/delete.png b/src/note1/app/src/main/res/drawable-hdpi/delete.png new file mode 100644 index 0000000..55a47ef Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/delete.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/mb.png b/src/note1/app/src/main/res/drawable-hdpi/mb.png new file mode 100644 index 0000000..17c790f Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/mb.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/qb.png b/src/note1/app/src/main/res/drawable-hdpi/qb.png new file mode 100644 index 0000000..6d2ea8c Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/qb.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/qm.png b/src/note1/app/src/main/res/drawable-hdpi/qm.png new file mode 100644 index 0000000..84590d6 Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/qm.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/save_note.png b/src/note1/app/src/main/res/drawable-hdpi/save_note.png new file mode 100644 index 0000000..27380d8 Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/save_note.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/tx.png b/src/note1/app/src/main/res/drawable-hdpi/tx.png new file mode 100644 index 0000000..a432950 Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/tx.png differ diff --git a/src/note1/app/src/main/res/drawable-hdpi/xc.png b/src/note1/app/src/main/res/drawable-hdpi/xc.png new file mode 100644 index 0000000..beed952 Binary files /dev/null and b/src/note1/app/src/main/res/drawable-hdpi/xc.png differ diff --git a/src/note1/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/src/note1/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..1f6bb29 --- /dev/null +++ b/src/note1/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/src/note1/app/src/main/res/drawable/ic_launcher_background.xml b/src/note1/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..0d025f9 --- /dev/null +++ b/src/note1/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/note1/app/src/main/res/layout/activity_main.xml b/src/note1/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..6817205 --- /dev/null +++ b/src/note1/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + +