基于NOTEPAD的修改

private static final String[] PROJECTION = new String[] {

NotePad.Notes._ID, // 0

NotePad.Notes.COLUMN_NAME_TITLE, // 1

NotePad.Notes.COLUMN_NAME_MODIFICATION_DATE,//在这里加入了修改时间的显示

};

查询数据还是按原来的方法,不需要修改

//NoteList使用SimpleCursorAdapter来装配数据,首先查询数据库的内容,

// 如下代码所示,这里使用ContentProvider默认的URI。

Cursor cursor = managedQuery(

getIntent().getData(), // Use the default content URI for the provider.

PROJECTION, // Return the note ID and title for each note.

null, // No where clause, return all records.

null, // No where clause, therefore no where column values.

NotePad.Notes.DEFAULT_SORT_ORDER // Use the default sort order.

);

装配的时候需要装配相应的日期,所以dataColumns,viewIDs这两个参数需要加入时间

String[] dataColumns = {

NotePad.Notes.COLUMN_NAME_TITLE,

NotePad.Notes.COLUMN_NAME_MODIFICATION_DATE

} ;

int[] viewIDs = { android.R.id.text1 ,R.id.text2};

然后通过SimpleCursorAdapter来进行装配

// Creates the backing adapter for the ListView.

//然后通过SimpleCursorAdapter来进行装配:

SimpleCursorAdapter adapter

= new SimpleCursorAdapter(

this, // The Context for the ListView

R.layout.noteslist_item, // Points to the XML for a list item

cursor, // The cursor to get items from

dataColumns,

viewIDs

);

时间就会显示在相应的条目上

如图:

这里写图片描述

这时候可能会发现时间差了8小时,或者发现虚拟机的时间和真实的时间差了八小时,即使把时间改过来下次时间还是错误的,这是由于时区的问题带来的,可以在代码中增加如下的内容:

format.setTimeZone(TimeZone.getTimeZone(“GMT”));

这样的话就会采用中国北京的标准时区,时间就会改正过来,或者在手机中修改相应的时区,光修改时间是没用的

这里写图片描述

这里写图片描述

3.添加笔记查询功能


首先,我们要在list_options_menu.xml中新建一个查询的按钮,作为查询功能实现的媒介

<item

android:id=“@+id/menu_search”

android:icon=“@drawable/search”

android:title=“@string/menu_search”

android:showAsAction=“always”

/>

这时候查询按钮就会显示在NotesList的主界面上

这里写图片描述

这里写图片描述

然后增加点击之后的反应,在onOptionsItemSelected的switch (item.getItemId())中添加对应menu_search的case:

case R.id.menu_search:

startActivity(new Intent(Intent.ACTION_SEARCH,getIntent().getData()));

return true;

在其中加入隐式Intent的跳转,方式仿照上面的写法

startActivity(new Intent(Intent.ACTION_SEARCH,getIntent().getData()));

然后在AndroidManifest.xml中加入相应的声名

<activity

android:name=“.NoteSearch”

android:label=“NoteSearch”

之后就可以跳转到相应的搜索界面

这里写图片描述

搜索采用SearchView实现,并通过实现implements SearchView.OnQueryTextListener接口来完成查询

实现方法类似与之前,首先定义一个数组来存放数据

private static final String[] PROJECTION = new String[]{

NotePad.Notes._ID, // 0

NotePad.Notes.COLUMN_NAME_TITLE, // 1

NotePad.Notes.COLUMN_NAME_MODIFICATION_DATE,//在这里加入了修改时间的显示

};

然后获取Intent

Intent intent = getIntent();// Gets the intent that started this Activity.

// If there is no data associated with the Intent, sets the data to the default URI, which

// accesses a list of notes.

if (intent.getData()==null){

intent.setData(NotePad.Notes.CONTENT_URI);

}

getListView().setOnCreateContextMenuListener(this);

之后对Search的样式做相应的修改

mSearchView = (SearchView)findViewById(R.id.search_view);//注册监听器

mSearchView.setIconifiedByDefault(false); //显示搜索的天幕,默认只有一个放大镜图标

mSearchView.setSubmitButtonEnabled(true); //显示搜索按钮

mSearchView.setBackgroundColor(getResources().getColor(R.color.blue_green)); //设置背景颜色

mSearchView.setOnQueryTextListener(this);

实现相应的接口

@Override

public boolean onQueryTextSubmit(String s) {

return false;

}

可以进行一些关于键盘弹出收回时的操作,这里采用默认,没有进行修改

@Override

public boolean onQueryTextChange(String s) { //Test改变的时候执行的内容

//Text发生改变时执行的内容

String selection = NotePad.Notes.COLUMN_NAME_TITLE + " Like ? ";//查询条件

String[] selectionArgs = { “%”+s+“%” };//查询条件参数,配合selection参数使用,%通配多个字符

//查询数据库中的内容,当我们使用 SQLiteDatabase.query()方法时,就会得到Cursor对象, Cursor所指向的就是每一条数据。

//managedQuery(Uri, String[], String, String[], String)等同于Context.getContentResolver().query()

Cursor cursor = managedQuery(

getIntent().getData(), // Use the default content URI for the provider.用于ContentProvider查询的URI,从这个URI获取数据

PROJECTION, // Return the note ID and title for each note. and modifcation date.用于标识uri中有哪些columns需要包含在返回的Cursor对象中

selection, // 作为查询的过滤参数,也就是过滤出符合selection的数据,类似于SQL的Where语句之后的条件选择

selectionArgs, // 查询条件参数,配合selection参数使用

NotePad.Notes.DEFAULT_SORT_ORDER // Use the default sort order.查询结果的排序方式,按照某个columns来排序,例:String sortOrder = NotePad.Notes.COLUMN_NAME_TITLE

);

//一个简单的适配器,将游标中的数据映射到布局文件中的TextView控件或者ImageView控件中

String[] dataColumns = { NotePad.Notes.COLUMN_NAME_TITLE , NotePad.Notes.COLUMN_NAME_MODIFICATION_DATE };

int[] viewIDs = { android.R.id.text1 , R.id.text2 };

SimpleCursorAdapter adapter = new SimpleCursorAdapter(

this, //context:上下文

R.layout.noteslist_item, //layout:布局文件,至少有int[]的所有视图

cursor, //cursor:游标

dataColumns, //from:绑定到视图的数据

viewIDs //to:用来展示from数组中数据的视图

//flags:用来确定适配器行为的标志,Android3.0之后淘汰

);

setListAdapter(adapter);

return true;

}

}

这里实现数据的查询,首先进行数据库的查询

String selection = NotePad.Notes.COLUMN_NAME_TITLE + " Like ? ";//查询条件

String[] selectionArgs = { “%”+s+“%” };//查询条件参数,配合selection参数使用,%通配多个字符

//查询数据库中的内容,当我们使用 SQLiteDatabase.query()方法时,就会得到Cursor对象, Cursor所指向的就是每一条数据。

//managedQuery(Uri, String[], String, String[], String)等同于Context.getContentResolver().query()

Cursor cursor = managedQuery(

getIntent().getData(), // Use the default content URI for the provider.用于ContentProvider查询的URI,从这个URI获取数据

PROJECTION, // Return the note ID and title for each note. and modifcation date.用于标识uri中有哪些columns需要包含在返回的Cursor对象中

selection, // 作为查询的过滤参数,也就是过滤出符合selection的数据,类似于SQL的Where语句之后的条件选择

selectionArgs, // 查询条件参数,配合selection参数使用

NotePad.Notes.DEFAULT_SORT_ORDER // Use the default sort order.查询结果的排序方式,按照某个columns来排序,例:String sortOrder = NotePad.Notes.COLUMN_NAME_TITLE

);

方法备注已经说明的很详细

之后写一个适配器,把游标中的数据映射到ListView中

//一个简单的适配器,将游标中的数据映射到布局文件中的TextView控件或者ImageView控件中

String[] dataColumns = { NotePad.Notes.COLUMN_NAME_TITLE , NotePad.Notes.COLUMN_NAME_MODIFICATION_DATE };

int[] viewIDs = { android.R.id.text1 , R.id.text2 };

SimpleCursorAdapter adapter = new SimpleCursorAdapter(

this, //context:上下文

R.layout.noteslist_item, //layout:布局文件,至少有int[]的所有视图

cursor, //cursor:游标

dataColumns, //from:绑定到视图的数据

viewIDs //to:用来展示from数组中数据的视图

//flags:用来确定适配器行为的标志,Android3.0之后淘汰

);

setListAdapter(adapter);

return true;

到此搜索功能也已经实现了

这里写图片描述

4.附加功能的实现


首先进行界面的美化,为界面换一个Theme

android:theme=“@android:style/Theme.Black”

修改一下条目显示的颜色,以及鼠标点击之后的颜色

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

这里写图片描述

在文本编辑界面中添加改变字体大小和字体颜色的功能

首先在editor_options_menu.xml中添加对应的菜单

<item

android:id=“@+id/font_size”

android:title=“@string/font_size”>

<item

android:id=“@+id/font_10”

android:title=“@string/font10”

/>

<item

android:id=“@+id/font_16”

android:title=“@string/font16” />

<item

android:id=“@+id/font_20”

android:title=“@string/font20” />

<item

android:title=“@string/font_color”

android:id=“@+id/font_color”

<item

android:id=“@+id/red_font”

android:title=“@string/red_title” />

<item

android:title=“@string/black_title”

android:id=“@+id/black_font”/>

对应的菜单就会在界面上方显示

这里写图片描述

然后在NoteEditor的onOptionsItemSelected(MenuItem item)中添加相应的case来相应事件

case R.id.font_10:

mText.setTextSize(20);

Toast toast =Toast.makeText(NoteEditor.this,“修改成功”,Toast.LENGTH_SHORT);

toast.show();

finish();

最后

分布式技术专题+面试解析+相关的手写和学习的笔记pdf

还有更多Java笔记分享如下:

image

itle=“@string/black_title”

android:id=“@+id/black_font”/>

对应的菜单就会在界面上方显示

这里写图片描述

然后在NoteEditor的onOptionsItemSelected(MenuItem item)中添加相应的case来相应事件

case R.id.font_10:

mText.setTextSize(20);

Toast toast =Toast.makeText(NoteEditor.this,“修改成功”,Toast.LENGTH_SHORT);

toast.show();

finish();

最后

分布式技术专题+面试解析+相关的手写和学习的笔记pdf

还有更多Java笔记分享如下:

[外链图片转存中…(img-iMlkrVCd-1720096206614)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值