基于Android开发的备忘录软件(创建、通知

(2)activity_edit.xml(部分代码)

<LinearLayout

android:orientation=“horizontal”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:layout_margin=“5dp”>

<LinearLayout

android:layout_width=“275dp”

android:layout_height=“122dp”

android:layout_weight=“5”

android:orientation=“vertical”>

<LinearLayout

android:layout_width=“289dp”

android:layout_height=“59dp”

android:orientation=“horizontal”>

<TextView

android:id=“@+id/dateText”

android:layout_width=“wrap_content”

android:layout_height=“fill_parent”

android:text=“现在是2020/1/1”

android:textAppearance=“?android:attr/textAppearanceLarge”

android:textSize=“25sp” />

<TextView

android:id=“@+id/timeText”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_marginLeft=“10dp”

android:text=“00:00”

android:textAppearance=“?android:attr/textAppearanceMedium”

android:textSize=“25sp” />

<TextView

android:id=“@+id/alarmView”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_marginTop=“5dp”

android:text=“提醒时间:”

android:textAppearance=“?android:attr/textAppearanceMedium”

android:textSize=“25sp” />

<ImageButton

android:id=“@+id/alarmButton”

android:layout_width=“40dp”

android:layout_height=“40dp”

android:background=“@drawable/alarm”

android:onClick=“setAlarm” />

(3)note_card.xml(部分代码)

<LinearLayout

android:orientation=“horizontal”

android:layout_width=“match_parent”

android:layout_height=“80dp”

android:layout_gravity=“center_horizontal”

android:layout_marginBottom=“2dp”

android:layout_marginTop=“2dp”>

<LinearLayout

android:orientation=“vertical”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:layout_weight=“1”>

<LinearLayout

android:orientation=“horizontal”

android:layout_width=“match_parent”

android:layout_height=“22dp”

android:layout_gravity=“center_horizontal”

android:padding=“0dp”

android:layout_margin=“0dp”

android:baselineAligned=“false”

android:layout_marginBottom=“1dp”>

<TextView

android:id=“@+id/textDate”

android:layout_width=“118dp”

android:layout_height=“wrap_content”

android:layout_gravity=“center”

android:gravity=“left|center_vertical”

android:textAppearance=“?android:attr/textAppearanceLarge”

android:textColor=“#908d8d”

android:textSize=“16sp”

android:typeface=“sans” />

<Space

android:layout_width=“5dp”

android:layout_height=“match_parent” />

<TextView

android:id=“@+id/textTime”

android:layout_width=“105dp”

android:layout_height=“wrap_content”

android:layout_gravity=“center”

android:gravity=“left|center_vertical”

android:textAppearance=“?android:attr/textAppearanceLarge”

android:textColor=“#908d8d”

android:textSize=“16sp”

android:typeface=“sans” />

<Space

android:layout_width=“224dp”

android:layout_height=“match_parent”

android:layout_weight=“1” />

<ImageView

android:id=“@+id/alarm”

android:layout_width=“40dp”

android:layout_height=“match_parent”

android:layout_gravity=“center”

android:layout_weight=“0”

android:src=“@drawable/alarm” />

<TextView

android:layout_width=“match_parent”

android:layout_height=“58dp”

android:textAppearance=“?android:attr/textAppearanceLarge”

android:id=“@+id/mainText”

android:layout_gravity=“center_horizontal”

android:layout_marginTop=“5dp”

android:textSize=“16sp”

android:typeface=“sans”

android:maxLines=“2”

android:ellipsize=“end”

android:lineSpacingMultiplier=“1.2”/>

②编写Note.java,创建备忘录的实体类,通过get和set方法获取和传入对应属性值。

public class Note {

private int id;

private int num;//列表中的位置

private String textDate;

private String textTime;

private String alarm;

private String mainText;

public Note(){}

public Note(int num, int tag, String textDate, String textTime, String alarm, String mainText, int id) {

this.num = num;

this.textDate = textDate;

this.textTime = textTime;

this.alarm = alarm;

this.mainText = mainText;

this.id = id;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

③编写列表适配器类NoteAdapter.java,通过ViewHolder进行数据缓存和快速设置列表中每一列的值。

public class NoteAdapter extends RecyclerView.Adapter<NoteAdapter.ViewHolder> {

private Context mContext;

private List mNoteList;

static class ViewHolder extends RecyclerView.ViewHolder {

CardView cardView;

ImageView tag;//cardview的标签图片

ImageView alarm;//cardview的闹钟图片

TextView mainText;//cardview的内容

TextView textDate;//cardview的日期

TextView textTime;//cardview的时间

public ViewHolder(View view) {//view是RecyclerView子项(CardView)的最外层布局

super(view);

cardView = (CardView) view;

alarm = (ImageView) view.findViewById(R.id.alarm);

mainText = (TextView) view.findViewById(R.id.mainText);

textDate = (TextView) view.findViewById(R.id.textDate);

textTime = (TextView) view.findViewById(R.id.textTime);

}

}

public NoteAdapter(List noteList) {

mNoteList = noteList;

}

/**

  • 加载布局cardView,以及布局中的事件

*/

@NonNull

@Override

public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

if (mContext == null) {

mContext = parent.getContext();

}

View view = LayoutInflater.from(mContext).inflate(R.layout.note_card,

parent, false);

return new ViewHolder(view);

}

/**

  • 对cardView的内容赋值

*/

@Override

public void onBindViewHolder(@NonNull ViewHolder holder,final int position) {

final OneNote oneNote=mNoteList.get(position);

holder.mainText.setText(oneNote.getMainText());

holder.textDate.setText(oneNote.getTextDate());

holder.textTime.setText(oneNote.getTextTime());

if (oneNote.getAlarm()){

//有提醒就设置显示

holder.alarm.setVisibility(View.VISIBLE);

}

else {

holder.alarm.setVisibility(View.GONE);

}

if (mItemClickListener!=null){

holder.cardView.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// 这里利用回调来给RecyclerView设置点击事件

mItemClickListener.onItemClick(position);

}

});

}

if (mItemLongClickListener!=null){

holder.cardView.setOnLongClickListener(new View.OnLongClickListener() {

@Override

public boolean onLongClick(View v) {

// 这里利用回调来给RecyclerView设置长按事件

mItemLongClickListener.onItemLongClick(position);

return true;

}

});

}

}

@Override

public int getItemCount() {

return mNoteList.size();

}

/**

  • 定义接口

*/

private ItemClickListener mItemClickListener;

private ItemLongClickListener mItemLongClickListener;

public interface ItemClickListener{

public void onItemClick(int position);

}

public interface ItemLongClickListener{

public boolean onItemLongClick(int position);

}

public void setOnItemClickListener(ItemClickListener itemClickListener){

this.mItemClickListener=itemClickListener;

}

public void setOnItemLongClickListener(ItemLongClickListener itemLongClickListener){

this.mItemLongClickListener=itemLongClickListener;

}

}

④编写主方法MainActivity.java,编写方法loadHistoryData加载已经存在的备忘录,创建NoteAdapter适配器对象adapter,并通过LinearLayoutManager设置布局管理器,从而完成页面布局显示。编写函数setOnItemLongClickListener实现对备忘录的删除,transportInformationToEdit对已有的备忘录的编辑。以及按钮的事件实现备忘录的添加,ListView里条目的点击事件(点击编辑),ListView里条目的长按事件(长按删除)。

public class MainActivity extends AppCompatActivity {

//list to store all the memo

private List notelist=new ArrayList<>();

//adapter

NoteAdapter adapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Toolbar main_toolbar=(Toolbar)findViewById(R.id.main_toolbar);

setSupportActionBar(main_toolbar);

//加载note

loadHistoryData();

//RecyclerView事件

RecyclerView recyclerView=(RecyclerView)findViewById(R.id.recycler_view);

LinearLayoutManager layoutManager=new LinearLayoutManager(this);

recyclerView.setLayoutManager(layoutManager);

adapter=new NoteAdapter(notelist);

recyclerView.setAdapter(adapter);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后

为了方便有学习需要的朋友,我把资料都整理成了视频教程(实际上比预期多花了不少精力),由于篇幅有限,都放在了我的GitHub上,点击即可免费获取!

Androidndroid架构视频+BAT面试专题PDF+学习笔记

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

  • 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!
  • 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。

讲义、实战项目、讲解视频**
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-AzWJbGIq-1710692319483)]

最后

为了方便有学习需要的朋友,我把资料都整理成了视频教程(实际上比预期多花了不少精力),由于篇幅有限,都放在了我的GitHub上,点击即可免费获取!

Androidndroid架构视频+BAT面试专题PDF+学习笔记

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

  • 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!
  • 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。

加油,共勉。

  • 29
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值