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笔记分享如下:
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)]