android本地备忘录助手
生活随笔
收集整理的這篇文章主要介紹了
android本地备忘录助手
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/* * 該類為主界面,通過側滑,劃出側滑菜單,里面有制作人的信息,添加,查找,刪除功能。* 主界面為白色,每三個物品信息為一行的卡片式布局呈現給用戶,通過點擊圖片查看具體信息*/
public class MainActivity extends AppCompatActivity {private DrawerLayout drawerLayout;private List<Goods> goodsList =new ArrayList<>();private goodsAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
// setSupportActionBar(toolbar);drawerLayout=(DrawerLayout)findViewById(R.id.drawer_layout);NavigationView navigationView=(NavigationView)findViewById(view);initGoods();RecyclerView recyclerView=(RecyclerView) findViewById(R.id.recycler_view);GridLayoutManager layoutManager=new GridLayoutManager(this,3);recyclerView.setLayoutManager(layoutManager);adapter=new goodsAdapter(goodsList);recyclerView.setAdapter(adapter);ActionBar actionBar=getSupportActionBar();if (actionBar!=null){actionBar.setDisplayHomeAsUpEnabled(true);}navigationView.setCheckedItem(R.id.nav_add); //默認選中navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener(){@Overridepublic boolean onNavigationItemSelected( MenuItem item) { //側滑菜單里的選項switch (item.getItemId()) {case R.id.nav_add:Intent intent1=new Intent(MainActivity.this,AddActivity.class);startActivity(intent1);break;case R.id.nav_search:Intent intent=new Intent(MainActivity.this,SearchActivity.class);startActivity(intent);break;case R.id.nav_delete:Intent intent2=new Intent(MainActivity.this,deleteActivity.class);startActivity(intent2);break;case R.id.nav_manage:Toast.makeText(MainActivity.this,"目前還沒有更多功能",Toast.LENGTH_SHORT).show();break;default:break;}return true;}});}public boolean onCreateOptionsMenu(Menu menu){getMenuInflater().inflate(R.menu.view,menu);return true;}private void initGoods(){List<Goods> goods= DataSupport.findAll(Goods.class); //讀取全部數據for (int i=0;goods.size()>i;i++){ //如果從數據庫讀取的數據小于總數據,則繼續讀取Goods good=new Goods("","","","",true,"");good.setName(goods.get(i).getName());good.setImageId(goods.get(i).getImageId());goodsList.add(good);}}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case R.id.refresh:initGoods();Toast.makeText(this,"刷新成功",Toast.LENGTH_SHORT).show();break;default:break;}return true;}
}
?
/** 該活動為登錄界面,使用Litepal數據庫存儲,采用映射方法建表,用戶賬號密碼存儲在User1中* 記住密碼功能采用的是鍵值對存儲* isremember為記住密碼的邏輯判斷**/ public class LoginActivity extends AppCompatActivity {private EditText user;private EditText password;private Button login;private Button register;private CheckBox remember;private SharedPreferences pref;private SharedPreferences.Editor editor;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);user=(EditText)findViewById(R.id.user);password=(EditText)findViewById(R.id.password);login=(Button)findViewById(R.id.denglu);register=(Button)findViewById(R.id.zhuce);remember=(CheckBox)findViewById(R.id.remember);LitePal.getDatabase(); //建表pref= PreferenceManager.getDefaultSharedPreferences(this);boolean isremember=pref.getBoolean("remember",false); //鍵值對存儲if (isremember){String user1=pref.getString("user","");String password1=pref.getString("password","");user.setText(user1);password.setText(password1);remember.setChecked(true);}login.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String user1=user.getText().toString();String password1=password.getText().toString();List<User> users= DataSupport.where("user=?",user1).find(User.class); //登錄判斷if(users.size()<1){AlertDialog.Builder dialog=new AlertDialog.Builder(LoginActivity.this);dialog.setMessage("此用戶不存在");dialog.setCancelable(false);dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();}else{ //成功登陸if(users.get(0).getPassword().equals(password1)){ //得到數據庫中第一個和user1相對應的密碼和輸入的密碼進行比較editor=pref.edit();if (remember.isChecked()){editor.putBoolean("remember",true);editor.putString("user",user1);editor.putString("password",password1);}else {editor.clear();}editor.apply();Intent intent=new Intent(LoginActivity.this,MainActivity.class);startActivity(intent);}else {AlertDialog.Builder dialog=new AlertDialog.Builder(LoginActivity.this);dialog.setMessage("密碼錯誤");dialog.setCancelable(false);dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();}}}});register.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(LoginActivity.this,RegisterActivity.class);startActivity(intent);finish();}});} } public class RegisterActivity extends AppCompatActivity {private EditText user;private EditText password;private EditText password1;private Button ok;private Button cancel; /** 該表為注冊界面,用于向數據庫里添加數據以及判斷是否有重復的數據,如果有則不添加新的數據* users為數據庫符合條件的數值,user0為添加數據時創建的對象,user1為輸入的賬號* password0為輸入的密碼,password00為重復的密碼,用于進一步確認*/@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_register);user=(EditText)findViewById(R.id.user);password=(EditText)findViewById(R.id.password);password1=(EditText)findViewById(R.id.password1);ok=(Button)findViewById(R.id.ok);cancel=(Button)findViewById(R.id.cancel);ok.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String user1=user.getText().toString();String password0=password.getText().toString();String password00=password1.getText().toString();List<User> users= DataSupport.where("user=?",user1).find(User.class); //注冊判斷if (users.size()>0){ //判斷用戶名是否重復AlertDialog.Builder dialog=new AlertDialog.Builder(RegisterActivity.this);dialog.setMessage("此用戶名已存在");dialog.setCancelable(false);dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();}else if (user1.equals("")){AlertDialog.Builder dialog=new AlertDialog.Builder(RegisterActivity.this);dialog.setMessage("賬號不能為空");dialog.setCancelable(false);dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();}else if (!user1.equals("")){if (password0.equals("")){AlertDialog.Builder dialog=new AlertDialog.Builder(RegisterActivity.this);dialog.setMessage("密碼不能為空");dialog.setCancelable(false);dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();}else if (password0.equals(password00)&&(!password0.equals(""))) { //判斷兩次密碼是否一次Toast.makeText(RegisterActivity.this,"注冊成功",Toast.LENGTH_SHORT).show();User user0=new User(); //將賬號密碼存到數據庫user0.setUser(user1);user0.setPassword(password0);user0.save();Intent intent=new Intent(RegisterActivity.this,LoginActivity.class);startActivity(intent);}else {AlertDialog.Builder dialog=new AlertDialog.Builder(RegisterActivity.this);dialog.setMessage("兩次密碼不一致");dialog.setCancelable(false);dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();}}}});cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(RegisterActivity.this,LoginActivity.class);startActivity(intent);}});} }增刪改查大同小異,就不一一貼了。下面這個是增加數據的活動。
?
/** 該類為物品信息添加類,包括物品名字,件數,存放地點,存放時間,圖片,以及鬧鐘提醒* 通過調用系統相冊來獲取圖片*/public class AddActivity extends AppCompatActivity {private EditText name;private EditText number;private EditText site;private EditText time;private ImageView imageId;private CheckBox remind;private Button ok;private Button cancel;private Button add;public static final int CHOOSE_PHOTO=1;String image_path="";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_add);name=(EditText)findViewById(R.id.name);number=(EditText)findViewById(R.id.number);site=(EditText)findViewById(R.id.site);time=(EditText)findViewById(R.id.time);remind=(CheckBox) findViewById(R.id.remind);imageId=(ImageView)findViewById(R.id.imageId);add=(Button)findViewById(R.id.add);ok=(Button)findViewById(R.id.ok1);cancel=(Button)findViewById(R.id.cancel1);add.setOnClickListener(new View.OnClickListener() {@Override //檢查是否有權限來打開相冊public void onClick(View v) {if (ContextCompat.checkSelfPermission(AddActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(AddActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},CHOOSE_PHOTO);}else {openAlbum();}}});ok.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) { //將輸入的數據添加到數據庫final String name1=name.getText().toString();String number1=number.getText().toString();String site1=site.getText().toString();String time1=time.getText().toString();boolean remind1=false;if (remind.isChecked()){remind1=true;}else {remind1=false;}Goods goods=new Goods(name1,number1,site1,time1,remind1,image_path);goods.save();Toast.makeText(AddActivity.this,"添加成功",Toast.LENGTH_SHORT).show();Intent intent2=new Intent(AddActivity.this,MainActivity.class);startActivity(intent2);}});cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(AddActivity.this,MainActivity.class);startActivity(intent);}});}private void openAlbum(){ //打開相冊函數Intent intent=new Intent("android.intent.action.GET_CONTENT");intent.setType("image/*");startActivityForResult(intent,CHOOSE_PHOTO);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {switch (requestCode){case CHOOSE_PHOTO:if (resultCode==RESULT_OK){handleImage(data);}break;default:break;}}@Override //調取相冊時再進行判斷權限public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {switch (requestCode){case CHOOSE_PHOTO:if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){openAlbum();}else {Toast.makeText(this,"you denied the permission",Toast.LENGTH_SHORT).show();}break;default:break;}}private void handleImage(Intent data){ //傳參過程 解析URiString imagePath=null;Uri uri=data.getData();if (DocumentsContract.isDocumentUri(this,uri)) {String docId = DocumentsContract.getDocumentId(uri);if ("com.android.providers.media.documents".equals(uri.getAuthority())) {String id = docId.split(":")[1];String selection = MediaStore.Images.Media._ID + "=" + id;imagePath = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection);} else if ("com.example.providers.downloads.documents".equals(uri.getAuthority())) {Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId));imagePath = getImagePath(contentUri, null);}}else if ("content".equalsIgnoreCase(uri.getScheme())){imagePath=getImagePath(uri,null);}else if ("file".equalsIgnoreCase(uri.getScheme())){imagePath=uri.getPath();}displayImage(imagePath);image_path=imagePath; //將得到的圖片路徑已字符串的形式保存下來}private String getImagePath(Uri uri, String selection){ //獲得圖片的路徑String path=null;Cursor cursor=getContentResolver().query(uri,null,selection,null,null);if (cursor!=null){if (cursor.moveToFirst()){path=cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));}cursor.close();}return path;}private void displayImage(String imagePath){ //顯示圖片if (imagePath!=null){Bitmap bitmap= BitmapFactory.decodeFile(imagePath);imageId.setImageBitmap(bitmap);}else {Toast.makeText(this,"得到圖像失敗",Toast.LENGTH_SHORT).show();}} } 這個和賬號密碼類差不多,就只貼這一個了。 import org.litepal.crud.DataSupport; /** 該類為數據庫User1中的Goods表對應的映射關系* 物品信息的物品類*/ public class Goods extends DataSupport {private String name;private String imageId;private String number;private String site;private String time;private boolean remind;public Goods(String name, String number,String site,String time,boolean remind,String imageId){this.name=name;this.number=number;this.site=site;this.time=time;this.remind=remind;this.imageId=imageId;}public String getName(){return name;}public void setName(String name){this.name=name;}public String getImageId(){return imageId;}public void setImageId(String imageId){this.imageId=imageId;}public String getNumber(){return number;}public void setNumber(String number){this.number=number;}public String getSite(){return site;}public void setSite(String site){this.site=site;}public String getTime(){return time;}public void setTime(String time){this.time=time;}public boolean getRemind( ){return remind;}public void setRemind(boolean remind){this.remind=remind;}} /** 該類為物品的顯示類,當點擊主界面的圖片時,會跳到這個界面,從而使某個物品的詳細信息顯示給用戶*/ public class goodsActivity extends AppCompatActivity {public static final String GOODS_NAME="good_name";public static final String GOODS_IMAGE="good_image";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_goods);Intent intent=getIntent();String goodname=intent.getStringExtra(GOODS_NAME);String goodImage=intent.getStringExtra(GOODS_IMAGE);Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);CollapsingToolbarLayout collapsingToolbarLayout=(CollapsingToolbarLayout)findViewById(R.id.collapsing_toolbar);ImageView imageView=(ImageView)findViewById(R.id.good_image_view);TextView textView=(TextView)findViewById(R.id.good_content_text);ActionBar actionBar=getSupportActionBar();actionBar.setDisplayHomeAsUpEnabled(true);collapsingToolbarLayout.setTitle(goodname);Glide.with(this).load(goodImage).into(imageView);String goodContent=generateFruitContent(goodname);textView.setText(goodContent);}private String generateFruitContent(String goodname){StringBuilder goodContent=new StringBuilder();List<Goods> goods= DataSupport.where("name=?",goodname).find(Goods.class);if (goods.size()>0){goodContent.append("存放件數:"+goods.get(0).getNumber()+"\n");goodContent.append("存放地點:"+goods.get(0).getSite()+"\n");goodContent.append("存放時間:"+goods.get(0).getTime()+"\n");boolean is=goods.get(0).getRemind();if(is){goodContent.append("是否提醒:"+"提醒"+"\n");}else {goodContent.append("是否提醒:"+"不提醒");}}return goodContent.toString();}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case android.R.id.home:finish();break;case R.id.alarm_button:Intent intent=new Intent(goodsActivity.this,Alarm1Activity.class);startActivity(intent);break;}return super.onOptionsItemSelected(item);}public boolean onCreateOptionsMenu(Menu menu){getMenuInflater().inflate(R.menu.view1,menu);return true;} } /* * 該類為適配器,使用卡片布局使他呈正方形顯示給用戶,以增加界面可觀性,使上半部分為圖片,最后一行為文字的形式顯示*/ public class goodsAdapter extends RecyclerView.Adapter<goodsAdapter.ViewHolder>{private Context context;private List<Goods> goodList;static class ViewHolder extends RecyclerView.ViewHolder{CardView cardView;ImageView imageView;TextView textView;public ViewHolder(View view){super(view);cardView=(CardView)view;imageView=(ImageView)view.findViewById(R.id.good_image);textView=(TextView)view.findViewById(R.id.good_name);}}public goodsAdapter(List<Goods> goodList){this.goodList =goodList;}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {if (context==null){context=parent.getContext();}View view= LayoutInflater.from(context).inflate(R.layout.good_item,parent,false);final ViewHolder holder=new ViewHolder(view);holder.cardView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {int position=holder.getAdapterPosition();Goods fruit= goodList.get(position);Intent intent=new Intent(context,goodsActivity.class);intent.putExtra(goodsActivity.GOODS_NAME,fruit.getName());intent.putExtra(goodsActivity.GOODS_IMAGE,fruit.getImageId());context.startActivity(intent);}});return holder;} //適配器呈現結果@Overridepublic void onBindViewHolder(ViewHolder holder, int position) {Goods fruit= goodList.get(position);holder.textView.setText(fruit.getName());Glide.with(context).load(fruit.getImageId()).into(holder.imageView);}@Overridepublic int getItemCount() {return goodList.size();} }最后是關于litepal關系映射。
?
<?xml version="1.0" encoding="utf-8" ?><litepal><dbname value="User1" ></dbname><version value="4"></version><list> <mapping class="com.example.administrator.zhushou.User"></mapping> <mapping class="com.example.administrator.zhushou.Goods"></mapping></list> </litepal> 關于XML的視圖就不放下來了。最后是部分截圖:
?
總結
以上是生活随笔為你收集整理的android本地备忘录助手的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [C#] ZEBRA ZPL指令打印Ba
- 下一篇: python老男孩培训