如何使用cursorloader读取Android中的SQLite数据库?

周星驰

我正在设置我的应用程序,以便人们可以创建自己的朋友组。创建组后,它将2个表写入SQL数据库。第一个表具有组名和组ID。第二个表有2列,一个组ID和一个用户ID。一切正常。

但是,现在我希望能够从数据库中读取。我正在使用带有的listview片段,cursorloader但是在获取信息时遇到了麻烦。我想列出列表视图中第一个表中的所有组名。

我的问题是,当我第一次使用cursorloader列出联系人时,我方法中使用的Urifrom 具体来说,我不得不类。content provideronCreateLoaderCONTENT_URIContactsContracts.Contacts

的例子cursorloadercontentprovider

@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
    Uri contentUri = ContactsContract.Contacts.CONTENT_URI;
    return new CursorLoader(getActivity(),contentUri,PROJECTION,SELECTION,ARGS,ORDER);
}

但是,没有使用内容提供程序,我不知道要在onCreateLoader方法中放入什么,因为第二个参数中return new CursorLoader(...)需要a Uri

关于我如何能够在列表视图中显示数据库数据的任何建议?

片段类代码:

public class GroupListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> {

CursorAdapter mAdapter;
private OnItemSelectedListener listener;
private static final String[] PROJECTION ={GroupContract.GroupDetails.COLUMN_NAME_GROUP_NAME};
private static final String SELECTION = null;
final String[] FROM = {GroupContract.GroupDetails.COLUMN_NAME_GROUP_NAME};
final int[] TO = {android.R.id.text1};
private static final String[] ARGS = null;
private static final String ORDER = null;
private Cursor c;


@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    mAdapter = new SimpleCursorAdapter(getActivity(), android.R.layout.simple_list_item_1,null,FROM,TO,0 );
    ReadDBAsync readDB = new ReadDBAsync();
    readDB.execute();
}

@Override
public void onActivityCreated(Bundle savedInstanceState){
    super.onActivityCreated(savedInstanceState);
    setListAdapter(mAdapter);
    getLoaderManager().initLoader(0,null,this);
}

@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
    Uri contenturi = Uri.parse("content://preamble.oneapp");
    Uri tableuri = Uri.withAppendedPath(contenturi,GroupContract.GroupDetails.TABLE_NAME);
    return new CursorLoader(getActivity(),tableuri,PROJECTION,SELECTION,ARGS,ORDER);
}

@Override
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
    mAdapter.swapCursor(cursor);
}

@Override
public void onLoaderReset(Loader<Cursor> cursorLoader) {
    mAdapter.swapCursor(null);
}


private class ReadDBAsync extends AsyncTask<Void,Void,String> {

    @Override
    protected String doInBackground(Void... voids) {

        ContractDBHelpers mDBHelper = new ContractDBHelpers(getActivity());
        SQLiteDatabase db = mDBHelper.getReadableDatabase();
        String returnvalue = "database read";
        c = db.query(GroupContract.GroupDetails.TABLE_NAME,PROJECTION,null,null,null,null,null);
        return returnvalue;
    }

    @Override
    protected void onPostExecute(String result){
        Toast.makeText(getActivity(), result, Toast.LENGTH_LONG).show();
    }
}

}
用户名

这些是在列表片段中创建游标加载器的步骤

1)创建扩展一个类SQLiteOpenHelper并重写onCreate,并onUpgrade以创建表。

2)创建一个扩展类ContentProvider并创建URI来访问您的数据库。请参阅http://developer.android.com/guide/topics/providers/content-providers.html将您的URI添加到URIMatcher您在onCreate,,onUpdate查询等(覆盖的方法)中使用的URI,以匹配URI。请参阅http://developer.android.com/reference/android/content/UriMatcher.html

3)在insert方法中调用getContext().getContentResolver().notifyChange(uri, null)在查询方法调用setNotificationUri(ContentResolver cr, Uri uri)之前,返回内容提供者以使插入更改自动反映到您的加载器。https://stackoverflow.com/a/7915117/936414)。

4)在中输入URI onCreateLoader

注意:如果没有内容提供商,从当前的android版本开始,自动刷新列表更改是不可行的。如果您不想显示contentprovider,请将清单中的exported属性设置为false。或者,您也可以像https://stackoverflow.com/a/7422343/936414中那样实现自定义的CursorLoader,以从数据库中检索数据。但是在这种情况下,无法自动刷新数据

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用cursorloader读取Android中的SQLite数据库?

来自分类Dev

在Android中首次使用SQLite数据库。如何?

来自分类Dev

如何在android中读取特定的消息格式并存储在sqlite数据库中?

来自分类Dev

使用Kotlin读取Android SQLite数据库时出错

来自分类Dev

如何从ROBLOX中的SQLite数据库读取

来自分类Dev

使用 SharkORM 从本地包中读取 SQLite 数据库

来自分类Dev

Android SQLite 数据库 - 不从数据库中读取浮点数的小数部分

来自分类Dev

如何使用Powershell读取/解密chrome sqlite数据库中的encryption_value列?

来自分类Dev

如何从 Android 应用程序的 SQLite 数据库中读取 sqlite 文本 - 字段(不是字符串)

来自分类Dev

如何使用AND条件更新SQLite数据库中的数据?

来自分类Dev

我如何才能从Android的数据库中读取

来自分类Dev

如何保护android中的sqlite数据库不被盗

来自分类Dev

如何从Android中的SQLite数据库获取空值

来自分类Dev

如何在Android中侦听SQLite数据库更改

来自分类Dev

Android如何从SQLite数据库的列中获取值

来自分类Dev

如何从Android中的SQLite数据库获取空值

来自分类Dev

如何检查android中是否存在Sqlite数据库?

来自分类Dev

如何从Android中的SQLite数据库获取名称

来自分类Dev

如何在android sqlite中更新数据库表?

来自分类Dev

如何在android的Sqlite数据库中创建表

来自分类Dev

如何在android中对sqlite数据库进行排序

来自分类Dev

读取sqlite数据库

来自分类Dev

如何在Android中调用onUpgrade(),以使用sqlite数据库

来自分类Dev

如何使用Android sqlite数据库更新一行中的多列?

来自分类Dev

如何使用DatabaseConnector类在SQLite Android中检查数据库是否为空

来自分类Dev

Android如何从onListItemClick中获取ListView ID并使用它?ListView,通知,SQLite数据库

来自分类Dev

如何使用python在sqlite数据库中搜索日期?

来自分类Dev

如何从数据库中读取json

来自分类Dev

在Android中升级SQLite数据库

Related 相关文章

  1. 1

    如何使用cursorloader读取Android中的SQLite数据库?

  2. 2

    在Android中首次使用SQLite数据库。如何?

  3. 3

    如何在android中读取特定的消息格式并存储在sqlite数据库中?

  4. 4

    使用Kotlin读取Android SQLite数据库时出错

  5. 5

    如何从ROBLOX中的SQLite数据库读取

  6. 6

    使用 SharkORM 从本地包中读取 SQLite 数据库

  7. 7

    Android SQLite 数据库 - 不从数据库中读取浮点数的小数部分

  8. 8

    如何使用Powershell读取/解密chrome sqlite数据库中的encryption_value列?

  9. 9

    如何从 Android 应用程序的 SQLite 数据库中读取 sqlite 文本 - 字段(不是字符串)

  10. 10

    如何使用AND条件更新SQLite数据库中的数据?

  11. 11

    我如何才能从Android的数据库中读取

  12. 12

    如何保护android中的sqlite数据库不被盗

  13. 13

    如何从Android中的SQLite数据库获取空值

  14. 14

    如何在Android中侦听SQLite数据库更改

  15. 15

    Android如何从SQLite数据库的列中获取值

  16. 16

    如何从Android中的SQLite数据库获取空值

  17. 17

    如何检查android中是否存在Sqlite数据库?

  18. 18

    如何从Android中的SQLite数据库获取名称

  19. 19

    如何在android sqlite中更新数据库表?

  20. 20

    如何在android的Sqlite数据库中创建表

  21. 21

    如何在android中对sqlite数据库进行排序

  22. 22

    读取sqlite数据库

  23. 23

    如何在Android中调用onUpgrade(),以使用sqlite数据库

  24. 24

    如何使用Android sqlite数据库更新一行中的多列?

  25. 25

    如何使用DatabaseConnector类在SQLite Android中检查数据库是否为空

  26. 26

    Android如何从onListItemClick中获取ListView ID并使用它?ListView,通知,SQLite数据库

  27. 27

    如何使用python在sqlite数据库中搜索日期?

  28. 28

    如何从数据库中读取json

  29. 29

    在Android中升级SQLite数据库

热门标签

归档