Android嵌套了对SimpleCursorAdapter和regexps的请求

时间:2014-07-01 11:15:31

标签: android regex sqlite listview

在我的应用程序中,我需要访问存储在SQLite数据库中的数据,以创建名称+图标列表。

我的数据库中有两个表: 一个包含名称列(以及许多其他列的详细信息),但此名称列包含文本的ID,该文本的ID存储在另一个表(dictionnary)中。 它看起来像这样:

主表:

ClassID | Name                    | ...
1       | "foo <$>9973</> bar"    | ...

dictionnay表:

ID      | Content
9973    | "Name of the item"

我需要的是在用于生成 ListView 之前自动从字典中检索名称。如果dictionnay调用不是异步制作的话,那将是最好的......

我需要应用与php fonction preg_replace_callback 类似的内容来匹配模式并在字典中查找相应的文本。

我已经看过setViewValue的一些内容,但我不确定如何使用它。

有什么建议吗? 感谢

编辑: 为了更清楚一点,输出应该在我的例子中:

"foo Name of the item bar"

1 个答案:

答案 0 :(得分:0)

由于我在使用SimpleCursorAdapter时遇到问题,我最终选择使用SimpleAdapter并通过我的dabatabase助手生成List。

生成列表的功能:

    ArrayList<HashMap<String,String>> getCharList(){
    if(list.isEmpty()) {
        Cursor mdbCursor;
        mdbCursor = this.getReadableDatabase()
                           .query("job", neenter code herew String[]{"ClassID _id", "Name"},
                                  null, null, null, null, null);
        if (mdbCursor != null) {
            while (mdbCursor.moveToNext()) {
                HashMap<String, String> temp = new HashMap<String, String>();
                String Name;
                temp.put("_id", mdbCursor.getString(0));
                Name=mdbCursor.getString(1);
                //I do my stuff on Name here
                temp.put("Name", Name);
                list.add(temp);
            }
            mdbCursor.close();
        }
    }

然后我在片段列表中以这种方式使用它:

db=new CharDatabase(getActivity());
String[] fromColumns = {"Name"};
int[] toViews = {R.id.charName};
mSimpleAdapter = new SimpleAdapter(getActivity(),
                                   db.getCharList(),
                                   R.layout.row,
                                   fromColumns,
                                   toViews);

这样我就可以轻松过滤元素了,如果我需要对它进行排序,我可以使用通常的排序函数来完成,然后调用:     mSimpleAdapter.notifyDataSetChanged();