本文介绍了如何通过&QUOT [字符串]分开; - "并进行多列在Android?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我工作的一个检索字典。其原料数据库是由分离 - 像

  Col​​umnA(Key_Word)ColumnB(Key_defination)
苹果 - 一类的水果
芒果 - 一个水果也

但我想使它3列(列C将Key_details)

  Col​​umnA ColumnB ColumnC(Key_details)
苹果 - 一个一种水果 - 圆形
芒果 - 一个水果也 - 发现在孟加拉国

当人们搜索,应用程序将显示列B和C.为什么我splited字符串的原因是我想说明Coumn B和C不同的窗口上。怎么做?这里是我的源头 -

  / **
 *包含逻辑从字典返回特定单词,
 *加载字典表时,需要创建它。
 * /
公共类DictionaryDatabase {
    私有静态最后弦乐TAG =DictionaryDatabase;    //列,我们将包含在字典表
    公共静态最后弦乐KEY_WORD = SearchManager.SUGGEST_COLUMN_TEXT_1;
    公共静态最后弦乐KEY_DEFINITION = SearchManager.SUGGEST_COLUMN_TEXT_2;    私有静态最后弦乐DATABASE_NAME =字典;
    私有静态最后弦乐FTS_VIRTUAL_TABLE =FTSdictionary;
    私有静态最终诠释DATABASE_VERSION = 2;    私人最终DictionaryOpenHelper mDatabaseOpenHelper;
    私有静态最后的HashMap<字符串,字符串> mColumnMap = buildColumnMap();
    公共DictionaryDatabase(上下文的背景下){
        mDatabaseOpenHelper =新DictionaryOpenHelper(背景);
    }    私有静态HashMap的<字符串,字符串> buildColumnMap(){
        HashMap的<字符串,字符串>地图=新的HashMap<字符串,字符串>();
        map.put(KEY_WORD,KEY_WORD);
        map.put(KEY_DEFINITION,KEY_DEFINITION);
        map.put(BaseColumns._IDROWID AS+
                BaseColumns._ID);
        map.put(SearchManager.SUGGEST_COLUMN_INTENT_DATA_IDROWID AS+
                SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID);
        map.put(SearchManager.SUGGEST_COLUMN_SHORTCUT_IDROWID AS+
                SearchManager.SUGGEST_COLUMN_SHORTCUT_ID);
        返回地图;
    }
    公共光标屏幕取词(ROWID的字符串,字符串[]列){
        字符串选择=ROWID =?;
        的String [] = selectionArgs两个新的String [] {} ROWID;        返回查询(选择,selectionArgs两个,列);
    }
    公共光标getWordMatches(查询字符串,字符串[]列){
        字符串选择= KEY_WORD +匹配吗?
        的String [] = selectionArgs两个新的String [] {查询+*};        返回查询(选择,selectionArgs两个,列);
    }
    私人光标查询(选择字符串,字符串[] selectionArgs两个,字符串[]列){
        SQLiteQueryBuilder建设者=新SQLiteQueryBuilder();
        builder.setTables(FTS_VIRTUAL_TABLE);
        builder.setProjectionMap(mColumnMap);        光标光标= builder.query(mDatabaseOpenHelper.getReadableDatabase()
                列,选择,selectionArgs两个,NULL,NULL,NULL);        如果(光标== NULL){
            返回null;
        }否则如果(!cursor.moveToFirst()){
            cursor.close();
            返回null;
        }
        返回游标;
    }    私有静态类DictionaryOpenHelper扩展SQLiteOpenHelper {        私人最终上下文mHelperContext;
        私人SQLiteDatabase mDatabase;
        私有静态最后弦乐FTS_TABLE_CREATE =
                    创建虚拟表+ FTS_VIRTUAL_TABLE +
                    使用FTS3(+
                    KEY_WORD +,+
                    KEY_DEFINITION +);;        DictionaryOpenHelper(上下文的背景下){
            超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
            mHelperContext =背景;
        }        @覆盖
        公共无效的onCreate(SQLiteDatabase DB){
            mDatabase = DB;
            mDatabase.execSQL(FTS_TABLE_CREATE);
            loadDictionary();
        }        私人无效loadDictionary(){
            新主题(新的Runnable接口(){
                公共无效的run(){
                    尝试{
                        借词();
                    }赶上(IOException异常五){
                        抛出新的RuntimeException(E);
                    }
                }
            })。开始();
        }        私人无效借词()抛出IOException
            Log.d(TAG加载的话...);
            最后的资源资源= mHelperContext.getResources();
            为InputStream的InputStream = resources.openRawResource(R.raw.definitions);
            读者的BufferedReader =新的BufferedReader(新的InputStreamReader(InputStream的));            尝试{
                串线;
                而((行= reader.readLine())!= NULL){
                    串[]字符串= TextUtils.split(行, - );
                    如果(strings.length 2)继续;
                    长的id = addWord(串[0] .trim(),字符串[1] .trim());
                    如果(ID℃,){
                        Log.e(TAG,无法添加一句话:+串[0] .trim());
                    }
                }
            } {最后
                reader.close();
            }
            Log.d(TAG,加载完成的话。);
        }        众长addWord(字符串文字,字符串的定义){
            ContentValues​​ initialValues​​ =新ContentValues​​();
            initialValues​​.put(KEY_WORD,字);
            initialValues​​.put(KEY_DEFINITION,定义);            返回mDatabase.insert(FTS_VIRTUAL_TABLE,空,initialValues​​);
        }        @覆盖
        公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){
            Log.w(TAG,从版本升级数据库+ oldVersion +到
                    + NEWVERSION +,这将摧毁所有旧数据);
            db.execSQL(DROP TABLE IF EXISTS+ FTS_VIRTUAL_TABLE);
            的onCreate(DB);
        }
    }}


解决方案

 的String [] = ARR string.split( - );

EDIT:

long id = addWord(strings[0].trim(), strings[1].trim());

Above line should be:

long id = addWord(strings[0].trim(), strings[1].trim(),strings[2].trim());

And change your addWord function as I mentioned below.

public long addWord(String word, String definition,String details) {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_WORD, word);
        initialValues.put(KEY_DEFINITION, definition);
        initialValues.put(KEY_DETAILS, details);

        return mDatabase.insert(FTS_VIRTUAL_TABLE, null, initialValues);
    }

这篇关于如何通过&QUOT [字符串]分开; - "并进行多列在Android?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 02:02