亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? sortcursor.java

?? Android平臺(tái)上的media player, iPhone風(fēng)格
?? JAVA
字號(hào):
/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.android.internal.database;import android.database.AbstractCursor;import android.database.Cursor;import android.database.DataSetObserver;import android.util.Log;/** * A variant of MergeCursor that sorts the cursors being merged. If decent * performance is ever obtained, it can be put back under android.database. */public class SortCursor extends AbstractCursor{    private static final String TAG = "SortCursor";    private Cursor mCursor; // updated in onMove    private Cursor[] mCursors;    private int [] mSortColumns;    private final int ROWCACHESIZE = 64;    private int mRowNumCache[] = new int[ROWCACHESIZE];    private int mCursorCache[] = new int[ROWCACHESIZE];    private int mCurRowNumCache[][];    private int mLastCacheHit = -1;    private DataSetObserver mObserver = new DataSetObserver() {        @Override        public void onChanged() {            // Reset our position so the optimizations in move-related code            // don't screw us over            mPos = -1;        }        @Override        public void onInvalidated() {            mPos = -1;        }    };        public SortCursor(Cursor[] cursors, String sortcolumn)    {        mCursors = cursors;        int length = mCursors.length;        mSortColumns = new int[length];        for (int i = 0 ; i < length ; i++) {            if (mCursors[i] == null) continue;                        // Register ourself as a data set observer            mCursors[i].registerDataSetObserver(mObserver);                        mCursors[i].moveToFirst();            // We don't catch the exception            mSortColumns[i] = mCursors[i].getColumnIndexOrThrow(sortcolumn);        }        mCursor = null;        String smallest = "";        for (int j = 0 ; j < length; j++) {            if (mCursors[j] == null || mCursors[j].isAfterLast())                continue;            String current = mCursors[j].getString(mSortColumns[j]);            if (mCursor == null || current.compareToIgnoreCase(smallest) < 0) {                smallest = current;                mCursor = mCursors[j];            }        }        for (int i = mRowNumCache.length - 1; i >= 0; i--) {            mRowNumCache[i] = -2;        }        mCurRowNumCache = new int[ROWCACHESIZE][length];    }    @Override    public int getCount()    {        int count = 0;        int length = mCursors.length;        for (int i = 0 ; i < length ; i++) {            if (mCursors[i] != null) {                count += mCursors[i].getCount();            }        }        return count;    }    @Override    public boolean onMove(int oldPosition, int newPosition)    {        if (oldPosition == newPosition)            return true;        /* Find the right cursor         * Because the client of this cursor (the listadapter/view) tends         * to jump around in the cursor somewhat, a simple cache strategy         * is used to avoid having to search all cursors from the start.         * TODO: investigate strategies for optimizing random access and         * reverse-order access.         */        int cache_entry = newPosition % ROWCACHESIZE;        if (mRowNumCache[cache_entry] == newPosition) {            int which = mCursorCache[cache_entry];            mCursor = mCursors[which];            if (mCursor == null) {                Log.w(TAG, "onMove: cache results in a null cursor.");                return false;            }            mCursor.moveToPosition(mCurRowNumCache[cache_entry][which]);            mLastCacheHit = cache_entry;            return true;        }        mCursor = null;        int length = mCursors.length;        if (mLastCacheHit >= 0) {            for (int i = 0; i < length; i++) {                if (mCursors[i] == null) continue;                mCursors[i].moveToPosition(mCurRowNumCache[mLastCacheHit][i]);            }        }        if (newPosition < oldPosition || oldPosition == -1) {            for (int i = 0 ; i < length; i++) {                if (mCursors[i] == null) continue;                mCursors[i].moveToFirst();            }            oldPosition = 0;        }        if (oldPosition < 0) {            oldPosition = 0;        }        // search forward to the new position        int smallestIdx = -1;        for(int i = oldPosition; i <= newPosition; i++) {            String smallest = "";            smallestIdx = -1;            for (int j = 0 ; j < length; j++) {                if (mCursors[j] == null || mCursors[j].isAfterLast()) {                    continue;                }                String current = mCursors[j].getString(mSortColumns[j]);                if (smallestIdx < 0 || current.compareToIgnoreCase(smallest) < 0) {                    smallest = current;                    smallestIdx = j;                }            }            if (i == newPosition) break;            if (mCursors[smallestIdx] != null) {                mCursors[smallestIdx].moveToNext();            }        }        mCursor = mCursors[smallestIdx];        mRowNumCache[cache_entry] = newPosition;        mCursorCache[cache_entry] = smallestIdx;        for (int i = 0; i < length; i++) {            if (mCursors[i] != null) {                mCurRowNumCache[cache_entry][i] = mCursors[i].getPosition();            }        }        mLastCacheHit = -1;        return true;    }//    @Override//    public boolean deleteRow()//    {//        return mCursor.deleteRow();//    }////    @Override//    public boolean commitUpdates() {//        int length = mCursors.length;//        for (int i = 0 ; i < length ; i++) {//            if (mCursors[i] != null) {//                mCursors[i].commitUpdates();//            }//        }//        onChange(true);//        return true;//    }    @Override    public String getString(int column)    {        return mCursor.getString(column);    }    @Override    public short getShort(int column)    {        return mCursor.getShort(column);    }    @Override    public int getInt(int column)    {        return mCursor.getInt(column);    }    @Override    public long getLong(int column)    {        return mCursor.getLong(column);    }    @Override    public float getFloat(int column)    {        return mCursor.getFloat(column);    }    @Override    public double getDouble(int column)    {        return mCursor.getDouble(column);    }    @Override    public boolean isNull(int column)    {        return mCursor.isNull(column);    }    @Override    public byte[] getBlob(int column)    {        return mCursor.getBlob(column);       }        @Override    public String[] getColumnNames()    {        if (mCursor != null) {            return mCursor.getColumnNames();        } else {            return new String[0];        }    }    @Override    public void deactivate()    {        int length = mCursors.length;        for (int i = 0 ; i < length ; i++) {            if (mCursors[i] == null) continue;            mCursors[i].deactivate();        }    }    @Override    public void close() {        int length = mCursors.length;        for (int i = 0 ; i < length ; i++) {            if (mCursors[i] == null) continue;            mCursors[i].close();        }    }    @Override    public void registerDataSetObserver(DataSetObserver observer) {        int length = mCursors.length;        for (int i = 0 ; i < length ; i++) {            if (mCursors[i] != null) {                mCursors[i].registerDataSetObserver(observer);            }        }    }        @Override    public void unregisterDataSetObserver(DataSetObserver observer) {        int length = mCursors.length;        for (int i = 0 ; i < length ; i++) {            if (mCursors[i] != null) {                mCursors[i].unregisterDataSetObserver(observer);            }        }    }        @Override    public boolean requery()    {        int length = mCursors.length;        for (int i = 0 ; i < length ; i++) {            if (mCursors[i] == null) continue;                        if (mCursors[i].requery() == false) {                return false;            }        }        return true;    }}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日韩在线观看| 欧美不卡在线视频| 免费成人av在线| 国产人久久人人人人爽| 欧美三级视频在线观看| 国产精品一区二区久久精品爱涩| 日韩av一区二区三区| 国产精品第13页| 精品少妇一区二区三区在线视频| 色88888久久久久久影院野外| 国产麻豆一精品一av一免费| 亚洲不卡av一区二区三区| 国产三区在线成人av| 宅男在线国产精品| 色噜噜夜夜夜综合网| 国产大片一区二区| 日本欧美一区二区三区乱码| 亚洲蜜桃精久久久久久久| 久久久亚洲综合| 欧美一级高清大全免费观看| 91国产精品成人| 91美女在线观看| 处破女av一区二区| 国产在线国偷精品免费看| 亚洲成人av电影在线| 一区二区三区丝袜| 自拍av一区二区三区| 国产人伦精品一区二区| 久久综合狠狠综合久久综合88| 91麻豆精品国产91久久久使用方法| 色菇凉天天综合网| 一本大道综合伊人精品热热| 成年人网站91| 成人黄色软件下载| 成人三级伦理片| 成人免费毛片a| 国产精品综合视频| 国产一区二区三区不卡在线观看 | 成人午夜碰碰视频| 国产福利一区在线| 国产精品一二三四| 国产精品1区二区.| 国产一区二区导航在线播放| 狠狠色丁香婷综合久久| 国产麻豆视频精品| 激情成人综合网| 国内精品免费**视频| 国模一区二区三区白浆| 狠狠色综合日日| 国产综合色精品一区二区三区| 久久se精品一区精品二区| 另类小说色综合网站| 免费人成精品欧美精品 | 亚洲乱码国产乱码精品精可以看| 国产精品三级av| 中文字幕在线不卡| ...xxx性欧美| 一区二区三区精品视频在线| 亚洲高清免费视频| 秋霞影院一区二区| 国产精品中文字幕日韩精品| 国产成人自拍在线| 色噜噜久久综合| 国产精品免费人成网站| 中文字幕一区三区| 亚洲夂夂婷婷色拍ww47| 日本系列欧美系列| 国产精品资源在线| 91无套直看片红桃| 欧美精品一二三| 亚洲精品在线网站| 国产精品乱子久久久久| 亚洲国产三级在线| 久久精品久久综合| 成人国产精品免费网站| 欧美三级视频在线观看| 久久久蜜臀国产一区二区| 亚洲啪啪综合av一区二区三区| 性欧美大战久久久久久久久| 国精产品一区一区三区mba桃花| 成人午夜av电影| 在线成人免费观看| 国产亚洲欧美日韩在线一区| 夜夜操天天操亚洲| 精品一区二区三区免费| 一本一道综合狠狠老| 欧美一区二区私人影院日本| 欧美激情一区二区在线| 午夜精品视频一区| 国产精品一二三| 欧美二区在线观看| 中文字幕高清不卡| 日韩成人一区二区| 成人动漫在线一区| 日韩一区二区视频在线观看| 中文字幕日韩一区| 久久99精品国产.久久久久久| 色综合久久天天| 欧美精品一区二区三区在线| 亚洲成人免费视频| gogo大胆日本视频一区| 欧美一区二区三区视频免费| 亚洲欧美成人一区二区三区| 韩国成人精品a∨在线观看| 欧美午夜精品一区二区三区| 国产欧美精品一区二区色综合朱莉| 亚洲国产精品一区二区久久恐怖片| 国产精品18久久久久久vr | 欧美精品一区二区三区蜜桃| 亚洲电影一级黄| 99精品视频一区| 国产三级精品视频| 日本成人在线看| 欧美色爱综合网| 中文字幕日韩精品一区| 国产mv日韩mv欧美| 欧美精品一区二区三| 婷婷成人综合网| 欧美综合色免费| 自拍偷拍欧美精品| 成人午夜免费视频| 中文字幕第一区| 国产麻豆精品在线| 欧美tickle裸体挠脚心vk| 午夜国产不卡在线观看视频| 欧洲视频一区二区| 最新热久久免费视频| 成人免费高清在线| 国产午夜久久久久| 国内精品第一页| 精品国偷自产国产一区| 欧美图片一区二区三区| 国产精品另类一区| 国产福利不卡视频| 国产婷婷色一区二区三区| 久久精品免费看| 欧美精品一区二区在线播放 | 色又黄又爽网站www久久| 中文字幕一区av| 成人av在线播放网址| 国产精品午夜免费| 丁香六月久久综合狠狠色| 久久精品视频在线免费观看| 国产一区二区三区久久久| 久久久不卡网国产精品二区| 国产精品一二三在| 国产精品毛片a∨一区二区三区| 成人精品视频一区二区三区尤物| 国产精品久久一级| 成人成人成人在线视频| √…a在线天堂一区| 在线一区二区三区四区| 亚洲第一成年网| 欧美一区二区三区影视| 久久se这里有精品| 久久精品亚洲精品国产欧美 | 亚洲综合免费观看高清完整版在线| 色综合久久88色综合天天免费| 亚洲国产一区二区三区| 69精品人人人人| 国产精品正在播放| 国产精品久久久久久久久免费相片 | 一区二区成人在线| 欧美日韩午夜影院| 久久aⅴ国产欧美74aaa| 久久精品日韩一区二区三区| 色综合天天综合网天天狠天天| 一区二区三区 在线观看视频| 欧美猛男男办公室激情| 加勒比av一区二区| 国产精品网站一区| 在线精品视频小说1| 蜜臀久久99精品久久久久宅男| 久久精品在线免费观看| 日本韩国欧美在线| 精品亚洲欧美一区| 亚洲欧洲精品一区二区三区| 欧美日本一区二区三区四区| 国产一区二区三区综合| 亚洲日本一区二区三区| 日韩欧美国产综合| 99国产精品久久久久| 日韩va欧美va亚洲va久久| 中文字幕精品一区二区三区精品| 欧美日韩免费视频| 国产美女av一区二区三区| 一区二区三区四区视频精品免费| 51精品视频一区二区三区| 成人禁用看黄a在线| 欧美aa在线视频| 亚洲美腿欧美偷拍| 久久―日本道色综合久久| 欧美亚洲一区二区在线观看| 国产在线观看免费一区| 亚洲成人动漫一区| 国产精品久久久久久久久图文区 | 久久精品亚洲一区二区三区浴池| 欧美亚洲禁片免费| 91精品婷婷国产综合久久性色 | 中文字幕一区二区5566日韩|