手把手教你完成Android期末大作业(多功能应用型APP)(1)

这篇博客介绍了如何开发一个Android应用程序,专注于实现待办事项管理功能,包括布局设计、状态显示、事项级别标记、分类菜单、隐藏已完成任务以及添加新事项的交互。通过详细的步骤和代码示例,展示了如何实现任务列表的显示、过滤以及自定义对话框用于编辑和删除任务。此外,还涉及到了计时服务的实现,用于计时功能的添加。
摘要由CSDN通过智能技术生成

taskAdapter = new TaskAdapter();

taskListView.setAdapter(taskAdapter);

ReadTaskDataFromSQL();

return view;

}

7.设计每一条待办事项的布局样式,如图所示,布局设计就不放原码了,使用多个线性布局的嵌套,gravity,margin属性即可实现。

img:task-2.jpg

8.根据待办事项的状态显示不同按钮,并标记待办事项的重要程度。

public void ShowTaskContent(View convertView, TaskItem task){

//显示事项内容

TextView content = ((ViewHolder) convertView.getTag()).taskContent;

int status = task.getStatus();

content.setText(task.getContent());

//事项已完成 中划线 灰色

if(status == 1){

content.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);

content.setTextColor(getResources().getColor(R.color.GRAY, null));

}

//事项未完成 无中划线 黑色

if(status == 0){

content.getPaint().setFlags(0);

content.setTextColor(getResources().getColor(R.color.black, null));

}

//事项失败 无中划线 灰色

if(status == -1){

content.getPaint().setFlags(0);

content.setTextColor(getResources().getColor(R.color.GRAY, null));

}

}

public void ShowTaskLevel(View convertView, int level){

// 显示事项重要级别 level : 0~3 四个优先级 Ⅰ Ⅱ Ⅲ Ⅳ

TextView levelText = ((ViewHolder) convertView.getTag()).taskLevel;

if(level == 0){

levelText.setText(“Ⅰ”);

levelText.setTextColor(getResources().getColor(R.color.level_0, null));

}

if(level == 1){

levelText.setText(“Ⅱ”);

levelText.setTextColor(getResources().getColor(R.color.level_1, null));

}

if(level == 2){

levelText.setText(“Ⅲ”);

levelText.setTextColor(getResources().getColor(R.color.level_2, null));

}

if(level == 3){

levelText.setText(“Ⅳ”);

levelText.setTextColor(getResources().getColor(R.color.level_3, null));

}

}

9.在顶部添加五个TextView作为分类查看事项菜单,点击某一分类即可查看该分类下的所有事项,并修改被点击TextView 的样式。

/** 菜单栏模块 **/

public void SetTypeMenuOnClick(View view){

typeMenuList.add((TextView) view.findViewById(R.id.TypeMenu_default));

typeMenuList.add((TextView) view.findViewById(R.id.TypeMenu_work));

typeMenuList.add((TextView) view.findViewById(R.id.TypeMenu_study));

typeMenuList.add((TextView) view.findViewById(R.id.TypeMenu_life));

int[] color = {

getResources().getColor(R.color.defaultColor, null),

getResources().getColor(R.color.workColor, null),

getResources().getColor(R.color.studyColor, null),

getResources().getColor(R.color.lifeColor, null),

};

for(int i=0; i<4 ;i++){

int finalI = i; //分类索引值

typeMenuList.get(i).setOnClickListener(v -> {

// 点击分类的一项后设置样式

typeMenuList.get(finalI).setTextColor(Color.BLACK);

typeMenuList.get(finalI).setBackgroundColor(Color.WHITE);

typeMenuList.get((finalI+1) % 4).setBackgroundColor(color[(finalI+1) % 4]);

typeMenuList.get((finalI+1) % 4).setTextColor(Color.WHITE);

typeMenuList.get((finalI+2) % 4).setBackgroundColor(color[(finalI+2) % 4]);

typeMenuList.get((finalI+2) % 4).setTextColor(Color.WHITE);

typeMenuList.get((finalI+3) % 4).setBackgroundColor(color[(finalI+3) % 4]);

typeMenuList.get((finalI+3) % 4).setTextColor(Color.WHITE);

// 显示某一类待办数据,这里筛选taskList即可

List typeTaskList = new ArrayList<>();

String[] types = {“全部”, “工作”,“学习”,“生活”};

/* 分类索引值

0 全部

1 工作

2 学习

3 生活

*/

// 点击工作 学习 生活时分类

// TypeNow 是一个全局变量,表示当前的分类

TypeNow = types[finalI];

Log.i(TAG, "SetTypeMenuOnClick: "+TypeNow);

ReadTaskFromDatabase();

});

}

}

10.task.xml布局右上角加入一个switch控件用以隐藏已完成事项。

//隐藏已完成Switch

Switch hideCompletedTaskSwitch = view.findViewById(R.id.HideCompletedTaskView);

hideCompletedTaskSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if(isChecked) isHideCompleted = true;

else isHideCompleted = false;

// isHideCompleted 是一个全局变量,表示当前是否隐藏已完成事项

ReadTaskFromDatabase();

}

});

完成9,10步之后就需要修改读取数据库的模块,加入TypeNow和isHideCompleted变量加以控制。

public void ReadTaskFromDatabase(){

if (taskList.size()!=0) {

taskList.clear();

}

Cursor cursor = readDatabase.query(

“task”,

new String[]{“id”, “type”, “level”,“content”, “info”, “status”},

null,

null,

null,

null,

null

);

//隐藏,有分类

if(isHideCompleted && !TypeNow.equals(“全部”)){

//只获取未完成事项

while(cursor.moveToNext()){

if((cursor.getInt(5) == 0 ) && (cursor.getString(1).equals(TypeNow))){

TaskItem task = new TaskItem(

cursor.getInt(0),

cursor.getString(1),

cursor.getInt(2),

cursor.getString(3),

cursor.getString(4),

cursor.getInt(5)

);

taskList.add(task);

}

}

}

//不隐藏,有分类

if(!isHideCompleted && !TypeNow.equals(“全部”)){

while(cursor.moveToNext()){

if(cursor.getString(1).equals(TypeNow)){

TaskItem task = new TaskItem(

cursor.getInt(0),

cursor.getString(1),

cursor.getInt(2),

cursor.getString(3),

cursor.getString(4),

cursor.getInt(5)

);

taskList.add(task);

}

}

}

//隐藏,不分类

if(isHideCompleted && TypeNow.equals(“全部”)){

while(cursor.moveToNext()){

if(cursor.getInt(5) == 0){

TaskItem task = new TaskItem(

cursor.getInt(0),

cursor.getString(1),

cursor.getInt(2),

cursor.getString(3),

cursor.getString(4),

cursor.getInt(5)

);

taskList.add(task);

}

}

}

else{

while(cursor.moveToNext()){

TaskItem task = new TaskItem(

cursor.getInt(0),

cursor.getString(1),

cursor.getInt(2),

cursor.getString(3),

cursor.getString(4),

cursor.getInt(5)

);

taskList.add(task);

}

}

// 别忘了通知ListView适配器数据变化

taskAdapter.notifyDataSetChanged();

}

11、添加事项,这里使用的是在整个RelativeLayout布局中添加一个ImageView作为添加事项的按钮,并定义点击事件,点击时弹出对话框,在对话框中输入添加事项的信息。

自定义对话框需要先设计一个layout布局文件add_task_dialog.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

android:layout_width=“match_parent”

android:orientation=“vertical”

android:paddingLeft=“15dp”

android:paddingRight=“15dp”

android:paddingBottom=“20dp”

android:paddingTop=“10dp”

android:layout_height=“wrap_content”>

<TextView

android:text=“添加事项”

android:textColor=“@color/black”

android:textSize=“25dp”

android:layout_width=“match_parent”

android:gravity=“center”

android:layout_height=“50d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值