Android 利用cursor来进行排序
来源:互联网 发布:淘宝上面名龙堂好吗 编辑:程序博客网 时间:2024/06/11 03:22
主要思路是:override move系列的方法,让cursor以自己想要的顺序来移动,从而达到对cursor排序的目的。比如数组A0里有 4(0),3(1),1(2),2(3),括号内为位置,排序后用数据记录A1:1(2),2(3),3(1),4(0)。要访问第一个元素,则访问A1[0]得到1(2),根据(2)找到在A0中的实际位置2,即1(2)。参考了下系统的CursorWrapper和AbstractCursor代码实现,另外有时间可以顺带了解下MatrixCursor。
- package com.xx.test;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import android.database.Cursor;
- import android.database.CursorWrapper;
- import com.xx.test.SortCursor.SortEntry;
- public class SortCursor extends CursorWrapper implements Comparator<SortEntry>{
- public SortCursor(Cursor cursor) {
- super(cursor);
- }
- Cursor mCursor;
- ArrayList<SortEntry> sortList = new ArrayList<SortEntry>();
- int mPos = 0;
- public static class SortEntry {
- public String key;
- public int order;
- }
- public int compare(SortEntry entry1, SortEntry entry2) {
- return entry1.key.compareTo(entry2.key);
- }
- public SortCursor(Cursor cursor, String columnName) {
- super(cursor);
- mCursor = cursor;
- if (mCursor != null && mCursor.getCount() > 0) {
- int i = 0;
- int column = cursor.getColumnIndexOrThrow(columnName);
- for (mCursor.moveToFirst(); !mCursor.isAfterLast(); mCursor.moveToNext(), i++) {
- SortEntry sortKey = new SortEntry();
- sortKey.key = cursor.getString(column);
- sortKey.order = i;
- sortList.add(sortKey);
- }
- }
- Collections.sort(sortList, this);
- }
- public boolean moveToPosition(int position) {
- if (position >= 0 && position < sortList.size()) {
- mPos = position;
- int order = sortList.get(position).order;
- return mCursor.moveToPosition(order);
- }
- if (position < 0) {
- mPos = -1;
- }
- if (position >= sortList.size()) {
- mPos = sortList.size();
- }
- return mCursor.moveToPosition(position);
- }
- public boolean moveToFirst() {
- return moveToPosition(0);
- }
- public boolean moveToLast() {
- return moveToPosition(getCount() - 1);
- }
- public boolean moveToNext() {
- return moveToPosition(mPos + 1);
- }
- public boolean moveToPrevious() {
- return moveToPosition(mPos - 1);
- }
- public boolean move(int offset) {
- return moveToPosition(mPos + offset);
- }
- public int getPosition() {
- return mPos;
- }
- }
- Android 利用cursor来进行排序
- Android 利用cursor来进行排序
- Android 利用cursor来进行排序
- Android查询cursor之后对齐进行排序
- Android利用Json来进行网络数据传输
- Android利用Json来进行网络数据传输
- Android利用Json来进行网络数据传输
- oracle利用游标cursor进行成绩排名
- Android 使用SQLite数据库使用Cursor(游标)来进行操作
- 利用Comparable进行排序
- 利用TreeMap进行排序
- 利用sort进行排序
- 利用MapReduce进行排序
- Cursor排序
- Android 利用内容提供者进行排序分页查询
- 算法笔记五:利用堆结构来对数据进行排序
- LinkedList中将对象按照某一属性排序,利用 collection.sort(); 来进行调用!
- 利用SortFilterModel来对我们的Model进行过滤及排序
- AdapterView及其子类之一:基本原理(ListView、ListActivity类型)
- mac pro 环境变量的配置 (当不存在 .bash_profile 文件的时候)
- mapreduce shuffle 讲的很详细
- 使用JQuery结合HIghcharts实现从后台获取JSON实时刷新图表
- 如何删除MySql服务
- Android 利用cursor来进行排序
- All inAll
- Microsoft Excel 的使用新技巧
- C++ 文件流小结
- highcharts 内存泄露的解决
- Mysql添加用户
- ocp 043 51-90
- 论文阅读方法
- 关于Javaweb 程序的部署