Android实现记事本功能(26)

本文实例为大家分享了Android实现记事本功能的具体代码,供大家参考,具体内容如下

MainActivity.java代码:

package siso.smartnotef.activity;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

import siso.smartnotef.R;
import siso.smartnotef.adapter.NotepadeAdapter;
import siso.smartnotef.db.DataHelper;
import siso.smartnotef.global.GlobalParams;
import siso.smartnotef.model.NotepadBean;
import siso.smartnotef.model.NotepadWithDataBean;
import siso.smartnotef.service.MainService;

public class MainActivity extends AppCompatActivity implements View.OnClickListener, NotepadeAdapter.ClickFunction {

 private TextView tv_add;
 private ListView lv_contents;
 private List<NotepadWithDataBean> notepadWithDataBeanList;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 Intent intent1 = new Intent(MainActivity.this, MainService.class);
 startService(intent1);
 findViews();
 setListeners();
 initView();

 }

 private void findViews() {
 tv_add = (TextView) findViewById(R.id.tv_add);
 lv_contents = (ListView) findViewById(R.id.lv_content);
 }

 private void setListeners() {
 tv_add.setOnClickListener(this);
 }

 private void initView() {
 DataHelper helper = new DataHelper(MainActivity.this);
 notepadWithDataBeanList = new ArrayList<NotepadWithDataBean>();
 List<NotepadBean> notepadBeanList = helper.getNotepadList();
 for (int i = 0; i < notepadBeanList.size(); i++) {
  if (0 == notepadWithDataBeanList.size()) {
  NotepadWithDataBean notepadWithDataBean = new NotepadWithDataBean();
  notepadWithDataBean.setData(notepadBeanList.get(0).getDate());
  notepadWithDataBeanList.add(notepadWithDataBean);
  }
  boolean flag = true;
  for (int j = 0; j < notepadWithDataBeanList.size(); j++) {
  int date = notepadWithDataBeanList.get(j).getData();
  if (date == notepadBeanList.get(i).getDate()) {
   notepadWithDataBeanList.get(j).getNotepadBeenList().add(notepadBeanList.get(i));
   flag = false;
   break;
  }
  }
  if (flag) {
  NotepadWithDataBean notepadWithDataBean = new NotepadWithDataBean();
  notepadWithDataBean.setData(notepadBeanList.get(i).getDate());
  notepadWithDataBeanList.add(notepadWithDataBean);
  notepadWithDataBeanList.get(notepadWithDataBeanList.size() - 1).getNotepadBeenList().add(notepadBeanList.get(i));
  }
 }
 NotepadeAdapter adapter = new NotepadeAdapter(MainActivity.this, notepadWithDataBeanList, this);
 lv_contents.setAdapter(adapter);
// setListViewHeightBasedOnChildren(lv_contents);
 }

 public void setListViewHeightBasedOnChildren(ListView listView) {
 if (listView == null) return;
 ListAdapter listAdapter = listView.getAdapter();
 if (listAdapter == null) {
  // pre-condition
  return;
 }
 int totalHeight = 0;
 for (int i = 0; i < listAdapter.getCount(); i++) {
  View listItem = listAdapter.getView(i, null, listView);
  listItem.measure(0, 0);
  totalHeight += listItem.getMeasuredHeight();
 }
 ViewGroup.LayoutParams params = listView.getLayoutParams();
 params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
 listView.setLayoutParams(params);
 }

 @Override
 public void onClick(View v) {
 switch (v.getId()) {
  case R.id.tv_add:
  Intent intent = new Intent();
  Bundle bundle = new Bundle();
  bundle.putInt(GlobalParams.TYPE_KEY, GlobalParams.TYPE_ADD);
  intent.putExtras(bundle);
  intent.setClass(MainActivity.this, AddContentActivity.class);
  startActivityForResult(intent, GlobalParams.ADD_REQUEST);
  break;
 }
 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
 switch (requestCode) {
  case GlobalParams.ADD_REQUEST:
  if (GlobalParams.ADD_RESULT_OK == resultCode) {
   initView();
  }
  break;
 }
 }

 @Override
 public void clickItem(int position, int itemPosition) {
 Bundle bundle = new Bundle();
 bundle.putInt(GlobalParams.TYPE_KEY, GlobalParams.TYPE_EDIT);
 bundle.putSerializable(GlobalParams.BEAN_KEY, notepadWithDataBeanList.get(position));
 bundle.putInt(GlobalParams.ITEM_POSITION_KEY, itemPosition);
 Intent intent = new Intent(this, AddContentActivity.class);
 intent.putExtras(bundle);
 startActivityForResult(intent, GlobalParams.ADD_REQUEST);
 }

 @Override
 public void longClickItem(final int position, final int itemPostion) {
 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
 builder.setMessage("确认删除吗?");
 builder.setTitle("提示");
 builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
  DataHelper helper = new DataHelper(MainActivity.this);
  helper.deleteNotepad(notepadWithDataBeanList.get(position).getNotepadBeenList().get(itemPostion).getId());
  initView();
  }
 });
 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
  dialog.dismiss();
  }
 });
 builder.create().show();
 }
}

AddContentActivity.java代码:

package siso.smartnotef.activity;

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import java.util.Calendar;

import siso.smartnotef.R;
import siso.smartnotef.db.DataHelper;
import siso.smartnotef.global.GlobalParams;
import siso.smartnotef.model.NotepadBean;
import siso.smartnotef.model.NotepadWithDataBean;

public class AddContentActivity extends AppCompatActivity implements View.OnClickListener {

 private TextView tv_save;
 private TextView tv_date;
 private TextView tv_time;
 private TextView tv_cancel;
 private EditText et_content;
 private String time = "";
 private String date = "";
 private Bundle bundle;
 private int type;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_add_content);
 bundle=getIntent().getExtras();
 type=bundle.getInt(GlobalParams.TYPE_KEY);
 findViews();
 setListeners();
 initDate();
 }

 private void findViews() {
 et_content=(EditText)findViewById(R.id.et_content);
 tv_save = (TextView) findViewById(R.id.tv_save);
 tv_date = (TextView) findViewById(R.id.tv_date);
 tv_time = (TextView) findViewById(R.id.tv_time);
 tv_cancel=(TextView)findViewById(R.id.tv_cancel);
 }

 private void setListeners() {
 tv_save.setOnClickListener(this);
 tv_date.setOnClickListener(this);
 tv_time.setOnClickListener(this);
 tv_cancel.setOnClickListener(this);
 }

 private void initDate() {
 Calendar c = Calendar.getInstance();
 int year=c.get(Calendar.YEAR);
 int month=c.get(Calendar.MONTH);
 int day=c.get(Calendar.DAY_OF_MONTH);
 date=getDate(year,month,day);
 if(type==GlobalParams.TYPE_EDIT){
  NotepadWithDataBean notepadWithDataBean=(NotepadWithDataBean)(bundle.getSerializable(GlobalParams.BEAN_KEY));
  et_content.setText(notepadWithDataBean.getNotepadBeenList().get(bundle.getInt(GlobalParams.ITEM_POSITION_KEY)).getContent());
  date=notepadWithDataBean.getData()+"";
  tv_date.setText(date);
  time=notepadWithDataBean.getNotepadBeenList().get(bundle.getInt(GlobalParams.ITEM_POSITION_KEY)).getTime();
  tv_time.setText(time);
 }
 }

 private String getDate(int year,int month,int day){
 String date="";
 date+=year;
 if(month<9){
  date=date+"0"+(month+1);
 }else{
  date+=(month+1);
 }
 if(day<10){
  date=date+"0"+day;
 }else {
  date+=day;
 }
 return date;
 }
 @Override
 public void onClick(View v) {
 switch (v.getId()) {
  case R.id.tv_save:
  if(type==GlobalParams.TYPE_EDIT){
   update();
  }else {
   save();
  }
  break;
  case R.id.tv_date:
  selectDateDialog();
  break;
  case R.id.tv_time:
  selectTimeDialog();
  break;
  case R.id.tv_cancel:
  finish();
  break;
 }
 }
 private void selectDateDialog(){
 Calendar c = Calendar.getInstance();
 int year=c.get(Calendar.YEAR);
 final int month=c.get(Calendar.MONTH)+1;
 int day=c.get(Calendar.DAY_OF_MONTH);
 new DatePickerDialog(AddContentActivity.this, new DatePickerDialog.OnDateSetListener() {
  @Override
  public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
  date=getDate(year,monthOfYear,dayOfMonth);
  tv_date.setText(date);
  }
 },year,month,day).show();
 }

 private void selectTimeDialog() {
 Calendar c = Calendar.getInstance();
 int mHour = c.get(Calendar.HOUR_OF_DAY);
 int mMinute = c.get(Calendar.MINUTE);
 new TimePickerDialog(AddContentActivity.this,
  new TimePickerDialog.OnTimeSetListener() {

   @Override
   public void onTimeSet(TimePicker view,
      int hourOfDay, int minute) {
   time=formatTime(hourOfDay,minute);
   tv_time.setText(time);
   }
  }, mHour, mMinute, true).show();
 }

 private String formatTime(int hour,int minute){
 String time=hour+":";
 if(minute<10){
  time=time+"0"+minute;
 }else{
  time+=minute;
 }
 return time;
 }
 private void save() {
 String content = et_content.getText().toString();
 if ("".equals(content)) {
  Toast.makeText(AddContentActivity.this, "请输入内容", Toast.LENGTH_SHORT).show();
  return;
 }
 if ("".equals(time)) {
  Toast.makeText(AddContentActivity.this, "请选择时间", Toast.LENGTH_SHORT).show();
  return;
 }
 NotepadBean notepadBean = new NotepadBean();
 notepadBean.setContent(content);
 notepadBean.setDate(Integer.parseInt(date));
 notepadBean.setTime(time);
 DataHelper helper = new DataHelper(AddContentActivity.this);
 helper.insertData(notepadBean);
 setResult(GlobalParams.ADD_RESULT_OK);
 finish();
 }
 private void update(){
 DataHelper helper=new DataHelper(AddContentActivity.this);
 NotepadWithDataBean bean=(NotepadWithDataBean)(bundle.getSerializable(GlobalParams.BEAN_KEY));
 int itemPosition=bundle.getInt(GlobalParams.ITEM_POSITION_KEY);
 helper.update(bean.getNotepadBeenList().get(itemPosition).getId(),date,time,et_content.getText().toString());
 setResult(GlobalParams.ADD_RESULT_OK);
 finish();
 }
}

RemindActivity.java代码:

package siso.smartnotef.activity;

import android.media.MediaPlayer;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.IOException;

import siso.smartnotef.R;
import siso.smartnotef.global.GlobalParams;

public class RemindActivity extends AppCompatActivity {

 private TextView tv_content;
 private Button bt_confirm;
 private MediaPlayer mMediaPlayer;;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_remind);
 findViews();
 setListeners();
 Bundle bundle=getIntent().getExtras();
 String content=bundle.getString(GlobalParams.CONTENT_KEY);
 tv_content.setText(content);
 playSound();
 }

 private void findViews(){
 tv_content=(TextView)findViewById(R.id.tv_content);
 bt_confirm=(Button) findViewById(R.id.bt_confirm);
 }
 private void setListeners(){
 bt_confirm.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  if(null!=mMediaPlayer){
   mMediaPlayer.stop();
   finish();
  }
  }
 });
 }

 public void playSound() {
 new Thread(new Runnable() {
  @Override
  public void run() {
  mMediaPlayer = MediaPlayer.create(RemindActivity.this, getSystemDefultRingtoneUri());
  mMediaPlayer.setLooping(true);//设置循环
  try {
   mMediaPlayer.prepare();
  } catch (IllegalStateException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  mMediaPlayer.start();
  }
 }).start();

 }
 //获取系统默认铃声的Uri
 private Uri getSystemDefultRingtoneUri() {
 return RingtoneManager.getActualDefaultRingtoneUri(RemindActivity.this,
  RingtoneManager.TYPE_RINGTONE);
 }

}

activity_main.xml内容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_main"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context="siso.smartnotef.activity.MainActivity">

 <RelativeLayout
 android:layout_width="match_parent"
 android:layout_height="50dp"
 android:background="@color/title_color"
 android:paddingLeft="10dp"
 android:paddingRight="10dp">
 <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textColor="@color/white"
  android:textSize="18sp"
  android:layout_centerInParent="true"
  android:text="智能记事本"/>
 <TextView
  android:id="@+id/tv_add"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textColor="@color/white"
  android:text="新增"
  android:layout_centerVertical="true"
  android:layout_alignParentRight="true"
  android:textSize="13sp"/>
 </RelativeLayout>
 <ListView
 android:id="@+id/lv_content"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"></ListView>
</LinearLayout>

activity_add_content.xml内容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_add_content"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context="siso.smartnotef.activity.AddContentActivity">
 <RelativeLayout
 android:layout_width="match_parent"
 android:layout_height="50dp"
 android:background="@color/title_color"
 android:paddingLeft="10dp"
 android:paddingRight="10dp">
 <TextView
  android:id="@+id/tv_cancel"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerVertical="true"
  android:text="取消"
  android:textColor="@color/white"/>
 <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textColor="@color/white"
  android:textSize="18sp"
  android:layout_centerInParent="true"
  android:text="智能记事本"/>
 <TextView
  android:id="@+id/tv_save"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textColor="@color/white"
  android:text="保存"
  android:layout_centerVertical="true"
  android:layout_alignParentRight="true"
  />
 </RelativeLayout>
 <LinearLayout
 android:layout_marginTop="10dp"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:orientation="horizontal"
 android:layout_gravity="center_horizontal">
 <TextView
  android:id="@+id/tv_date"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:padding="5dp"
  android:text="今天"/>
 <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text=" -- "/>
 <TextView
  android:id="@+id/tv_time"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:padding="5dp"
  android:text="请选择时间"
  />
 </LinearLayout>
 <EditText
 android:id="@+id/et_content"
 android:layout_marginTop="10dp"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:inputType="textMultiLine"
 android:gravity="left|top"
 android:layout_margin="20dp"
 android:padding="10dp"
 android:hint="请输入内容"
 android:background="@drawable/edit_back"/>
</LinearLayout>

activity_remind.xml内容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@color/white"
 android:orientation="vertical"
 tools:context="siso.smartnotef.activity.RemindActivity">

 <TextView
 android:id="@+id/tv_content"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center_horizontal" />

 <Button
 android:id="@+id/bt_confirm"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center_horizontal"
 android:text="取消" />
</LinearLayout>

AndroidManifest.xml内容:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="siso.smartnotef">
 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

 <application
 android:allowBackup="true"
 android:icon="@mipmap/ic_launcher"
 android:label="@string/app_name"
 android:supportsRtl="true"
 android:theme="@style/Theme.AppCompat.Light.NoActionBar">

 <activity
  android:name=".activity.MainActivity"
  android:theme="@style/Theme.AppCompat.Light.NoActionBar">
  <intent-filter>
  <action android:name="android.intent.action.MAIN" />

  <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
 </activity>

 <receiver android:name=".receiver.MainReceiver">
  <intent-filter>
  <action android:name="android.intent.action.BOOT_COMPLETED" />
  </intent-filter>
 </receiver>

 <activity android:name=".activity.AddContentActivity" />

 <service
  android:name=".service.MainService"
  android:enabled="true"
  android:exported="true" />

 <activity android:name=".activity.RemindActivity"
  ></activity>


 </application>

</manifest>

项目结构如图:

项目运行结果如图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。