Android第四次作业
1.团队成员
韩丽萍 1600802042 计162班 博客链接:https://www.cnblogs.com/hlpbk/
祁海燕 1600802054 计162班 博客链接:https://www.cnblogs.com/qhybk/
2.apk链接:
https://git.dev.tencent.com/hanlp/mydiaryapp.git
3.项目完整代码链接:
https://git.dev.tencent.com/hanlp/mydiary.git
4.介绍团队项目
4.1 团队项目的总体效果截图
视频连接:http://v.youku.com/v_show/id_XMzk5Njg1NDQ4NA==.html?spm=a2h3j.8428770.3416059.1
4.2 实现的功能及其效果的描述
本次作业的实现,用到的知识点有UI,listview,Intent,SQLite数据库,实现了一个简单的日记APP,能够实现的功能包括
(1)新建日记,新建日记时当天的日期,星期以及天气状况均不能为空,如果其中一个为空,则会提示该项不能为空。
(2)编辑日记,可以编辑已有的日记内容,修改完成后会提示插入或修改成功。
(3)删除日记,可以删除任意一天的日记,删除后会提示删除成功。
(4)保存日记,日记信息通过安卓自带数据库进行存储。
5.项目中的关键代码
//初始化数据库 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DaoDiary.instance().init(getApplicationContext()); mButton = (Button) findViewById(R.id.add); mListView = (ListView) findViewById(R.id.listview); list = DaoDiary.instance().selectAll(); adapter = new MyAdapter(); mListView.setAdapter(adapter); mListView.setOnItemClickListener(this); mButton.setOnClickListener(this); }
//新建日记 public void onClick(View v) { Intent intent = new Intent(); intent.setClass(this, NewActivity.class); if (list == null) { intent.putExtra("id", 1); } else { intent.putExtra("id", list.size()+2); } intent.putExtra("isshow", true); startActivity(intent); }
listview点击事件 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(); intent.setClass(this, NewActivity.class); intent.putExtra("id", list.get(position).getId()); intent.putExtra("date", list.get(position).getDate()); intent.putExtra("week", list.get(position).getWeek()); intent.putExtra("weather", list.get(position).getWeather()); intent.putExtra("content", list.get(position).getContent()); intent.putExtra("isshow", false); startActivity(intent); }
listview的adapter class MyAdapter extends BaseAdapter { @Override public int getCount() { if (list.size() != 0) { return list.size(); } return 0; } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holoder = null; if (convertView == null) { convertView = LayoutInflater.from(MainActivity.this).inflate(R.layout.diary_item, null); holoder = new ViewHolder(); holoder.date = (TextView) convertView.findViewById(R.id.item_date); holoder.delete = (TextView) convertView.findViewById(R.id.item_delete); holoder.edit = (TextView) convertView.findViewById(R.id.item_edit); convertView.setTag(holoder); } else { holoder = (ViewHolder) convertView.getTag(); } holoder.date.setText(list.get(position).getDate()); holoder.edit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //编辑日记 Intent intent = new Intent(); intent.setClass(MainActivity.this, NewActivity.class); intent.putExtra("id", list.get(position).getId()); intent.putExtra("date", list.get(position).getDate()); intent.putExtra("week", list.get(position).getWeek()); intent.putExtra("weather", list.get(position).getWeather()); intent.putExtra("content", list.get(position).getContent()); intent.putExtra("isshow", true); startActivity(intent); } }); holoder.delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //删除日记 if (DaoDiary.instance().delet(list.get(position).getId())) { list.clear(); if (DaoDiary.instance().selectAll()!=null) { list.addAll(DaoDiary.instance().selectAll()); } //刷新listview notifyDataSetChanged(); Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "删除失败", Toast.LENGTH_SHORT).show(); } } }); return convertView; }
6.其他团队项目的apk,团队讨论,选出你心目中的前5名,并简单说明一下
(1)https://www.cnblogs.com/JusperLee/p/10192769.html
他们的APP实现了制定计划并按时提醒的功能。
优点:实现的功能特别全面,觉得是一个成熟的APP了,实现的功能包括添加背单词计划;还能实现打卡,通过改卡片生成打卡内容;添加提醒事项的功能可以按时提醒学生需要做的事情;主题的更改功能能够切换白天与黑夜两个主题;这个APP比较简约,也很适合学生党的使用。
缺点:有时候会闪退。
(2)https://www.cnblogs.com/Suejun/p/10192755.html
他们的APP能够在课堂实现点名功能。
优点:实现的功能有:上课顺序点名功能上课 ;随机点名功能;查询信息功能;修改学生信息功能;显示公告
能够从数据库中找出学生信息进行顺序、随机点名,并可以修改数据库中的学生信息。
缺点:在实现随机点名功能时会出现打开学生数据表时一直会报错的情况;可以添加空记录的异常错误;删除最后一个数据时不可避免的异常;无法添加数据库
运行程序时,出现闪退情况;R包丢失;运行项目时出现错误:Information:Gradle tasks,
(3)https://www.cnblogs.com/mxl123/
这个快递APP可以帮助同学们实时了解自己的快递信息,还能发布代取信息。
优点:她们的APP主页上放了4种快递实现的功能:用户根据自己的快递的类型点击相关的快递来了解相关的快递信息,比如想看一下最近的校园招聘情况可以点圆通快递里面的“校园招聘” 进行了解,看看招聘时需要哪些条件和招聘流程等,用户也可以了解圆通的发展史,点击“了解圆通”就可以,了解申通等快递也是一样,在相对应的快递主页进行了解就可以,快递的主页联系方式,可以让别人帮忙取一下快递,安全性不要担心,因为在刚开始登录的时候,学号是唯一的,数据库里有登录的信息,如果遇到快递被别人拿走等,可以寻求帮助,主页中有“帮助”里面有联系人的信息。如果你的快递已到达你的身边,可是你没有时间去取,你可以发布动态,让别人帮忙取一下,你也可以点击“转入淘宝”在淘宝上挑选你所需要的物品。在我的主页,你也可以查看好友列表,当好友比较多时,列表可以进行上下拉动,这样比较方便浏览。
缺点:用户发布动态时其第一个动态会被覆盖。
(4)https://www.cnblogs.com/hanlulu/p/10186629.html
她们实现了一个简约的音乐播放器。
优点:上一曲、下一曲、播放、暂停;进步条;清除最近听得列表歌曲;播放列表;显示歌曲信息
缺点:不能实现网络搜索
(5)https://www.cnblogs.com/2575590018dqy/p/10193084.html
他们实现的也是音乐播放器。
优点:进度条控制音乐播放进度;播放,暂停,上一曲,下一曲,音量键控制音量大小;列表播放音乐;自动播放下一曲;还能实现随机播放,顺序播放,单曲循环
功能比较完善,界面简约而美观。
缺点:只能实现播放音乐播放器里的歌曲,不能实现自动搜索本地音乐的搜索。
7.团队成员做项目中遇到的问题,以及解决方法
7.1 祁海燕同学遇到的问题:
(1)日记信息的保存问题。解决办法:使用Android自带的SQLite数据库进行保存。
(2)日记的删除问题。解决办法 :
holoder.delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //删除日记 if (DaoDiary.instance().delet(list.get(position).getId())) { list.clear(); if (DaoDiary.instance().selectAll()!=null) { list.addAll(DaoDiary.instance().selectAll()); } //刷新listview notifyDataSetChanged(); Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "删除失败", Toast.LENGTH_SHORT).show(); } } }); return convertView; }
7.2 韩丽萍同学遇到的问题:
(1)日记的添加问题。解决办法:获取添加日记界面中日记的日期、标题以及具体的内容,然后将这些信息添加到数据库中
(2)日记的修改问题。解决办法:
public void onClick(View v) { //编辑日记 Intent intent = new Intent(); intent.setClass(MainActivity.this, NewActivity.class); intent.putExtra("id", list.get(position).getId()); intent.putExtra("date", list.get(position).getDate()); intent.putExtra("week", list.get(position).getWeek()); intent.putExtra("weather", list.get(position).getWeather()); intent.putExtra("content", list.get(position).getContent()); intent.putExtra("isshow", true); startActivity(intent); }
8.说明团队成员在本次项目中的分工、占了总工作的多少
姓名 | 分工 | 工作比例 | 得分 |
韩丽萍 | UI,数据库,功能实现 | 50% | 10 |
祁海燕 | UI,数据库,功能实现 | 50% | 10 |