索引,顾名思意就是在RecordStore中数据量比较大,搜索具体某条数据需要话费很长时间而产生的。以前没有接触过,在开发过程中,习惯性的将所有数据写入一个张表即一个RecordStore中,需要查找数据也是直接操作该表。
在j2me中可以模拟索引机制。一个Recordstore看作一个表,表中每条记录只有一列,同时Recordstore为每条记录自动分配一个独一无二的id.该id可以在RecordStore中的增加记录addstore方法的返回值中得到。明白了这点知识,就可以为原来的RecordStore建立一个索引Recordstore,该索引Recordstore包含原来recordstore添加数据产生的id,和用户自定义的一些关键字。关键字中所代表的详细信息在原来的RecordStore中存储,该过程用与该关键字对应的id即可从原来的recordstore取得详细信息。
具体代码:
byte[] data = account.serialize();
int id = rs.addRecord(data, 0, data.length);//rs为原来的数据库
Index index = new Index(account.getUserName(), id);//索引数据中只包含两个字段
rs_index.addRecord(index_data, 0, index_data.length);//rs_index为索引数据库
在学习手机通讯录中还有个知识点:
充分利用itemstatechange事件可以实现web编程中Ajax的实时与后台进行数据交换的效果
在界面方面有这样的一个特效,当选中某项,程序自动增加该项的子项
ChoiceGroup choice = new ChoiceGroup(null, ChoiceGroup.MULTIPLE);
//实现itemStateChange(Item item)接口
public void itemStateChanged(Item item)
{
if (item == choice)
{
if (choice.isSelected(0))//当ChoiceGroup中的第一项被选中,则在其目录下,添加子项
{
phoneIndex = this.append(phoneField);
emailIndex = this.append(emailField);
}
else
{
this.delete(emailIndex);
this.delete(phoneIndex);
}
}
}