标签: android-cursor

光标未使用自定义适配器正确绑定文本

SimpleCursorAdapter为我扩展的自定义适配器ListFragment无法正确显示数据库中的项目.它不会在TextView中显示文本,我还需要对光标做什么才能显示正确的文本?

我以为我必须覆盖bindView但没有效果

设置适配器:

public void populateList(){

        String[] fields = new String[] {BowlersDB.NAME};
        Cursor c = getActivity().getContentResolver().query(BowlersDB.CONTENT_URI,
                new String[] {BowlersDB.ID,BowlersDB.NAME},null,null,BowlersDB.NAME + " COLLATE LOCALIZED ASC");

mAdapter = new CheckAdapter(getActivity(),R.layout.check_listview,c,fields,new int[] {R.id.nameCheckTV});


        setListAdapter(mAdapter);   

        getLoaderManager().initLoader(0,null,this);
    }
Run Code Online (Sandbox Code Playgroud)

适配器:

public class CheckAdapter extends SimpleCursorAdapter{

    Context context;
    Cursor c;

    public CheckAdapter(Context context, int layout, Cursor c,String[] from, int[] to) {
        super(context, layout, c, from, to);
        this.context = context;
        this.c = c;
        // TODO Auto-generated constructor stub
    }

    @Override
    public void …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-cursor android-loadermanager android-cursoradapter

2
推荐指数
1
解决办法
1264
查看次数

Android-使用游标从数据库表中获取单个值

我正在使用游标从数据库中检索数据.我知道如何检索整个列以用于listviews等,但我很难找到一种方法来检索单个值.

假设我有一个包含两列("_id"和"Name")的表,我在该表中有十个记录(行).例如,我如何得到第三行中的名字?考虑到我定义了一个读取该表的游标:

public Cursor getMyNameInfo() {

    SQLiteDatabase db = getReadableDatabase();
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();


    String sqlTables = "MyNames";
    qb.setTables(sqlTables);
    Cursor c = qb.query(db, null, null, null,
            null, null, null);  

    c.moveToFirst();
    return c;
    }
Run Code Online (Sandbox Code Playgroud)

android android-cursor

2
推荐指数
1
解决办法
1万
查看次数

Android Cursor - moveToNext()似乎没有到光标的末尾

为什么我的Android光标不会一直走到最初的"承诺"的末尾?

我的cursor.getCount()与我上一次的cursor.getPosition()不同.检查我的while循环!这就是我用它做的一切!

注意:1.它是关于查询联系人内容提供者(android api> 5)2.我只显示基本代码

Cursor cursor = mContext.getContentResolver().query(mUri, mProjections, null, null, null);
Logger.d(TAG, "***  cursor.getCount(): "+cursor.getCount());
while (cursor.moveToNext()) {
    Logger.d(TAG, "| position: "+cursor.getPosition());
    processMainCursor(serializer, cursor);
}
cursor.close();
Run Code Online (Sandbox Code Playgroud)

processMainCursor()将显示来自游标的数据+执行另一个查询:一个4个电话,一个4个电子邮件,一个4个IM帐户:

void processMainCursor(XmlSerializer serializer, Cursor main_cursor) {
     writeCursorData(serializer, main_cursor); //writes cursor data, column by column
     writePhoneEntities(serializer, main_cursor);
     writeEmailEntities(serializer, main_cursor);
     writeIMEntities(serializer, main_cursor);
}
Run Code Online (Sandbox Code Playgroud)

在我的writeXXX方法中没有一个我关闭我的main_cursor或移动下一个!!! ..必须相信我...我只是做一个新的查询,打印数据并关闭该光标

所以统计:

  • cursor.getCount()= 695(总是)
  • 注释writePhoneEntities,writeEmailEntities,writeIMEntities:cursor.getCount()= last cursor.getPosition()= 695(所以正确!)
  • 留下一两个/所有的writeXEntities显示随机性; 例如:将它们全部留下:last cursor.getPosition()有时会显示254,257,253等; 只留下手机和IM:514,510,511等( …

android android-contacts android-cursor

2
推荐指数
1
解决办法
7005
查看次数

cursor.moveToFirst()始终返回false

我在这里搜索了一段时间没有任何帮助我.我想这很简单,我做的事情很愚蠢.所以,我有这个DataBaseHelper创建一个表并在其上放置两个值:

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "db";
    public static final String PROPERTY = "property";
    public static final String VALUE = "value";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE configs (property VARCHAR(15), value VARCHAR(10));");

        ContentValues cv=new ContentValues();

        cv.put(PROPERTY, "registered");
        cv.put(VALUE, "true");
        db.insert("configs", PROPERTY, cv);

        cv.put(PROPERTY, "test");
        cv.put(VALUE, "test");
        db.insert("configs", PROPERTY, cv);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的活动即时尝试:

@Override
public void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.register);

    layout …
Run Code Online (Sandbox Code Playgroud)

android cursor android-cursor

2
推荐指数
1
解决办法
6022
查看次数

错误:光标在没有事先关闭的情况下完成

我在Android上有一个基于Google Map的应用程序.
简而言之,该应用程序的工作原理是:首先输入一些样本数据(包含纬度/经度对到数据库中),读取它们,最后在地图叠加层上绘制它们.

当我在Android 2.3.3(Gingerbread)模拟器以及我的HTC Desire S上运行它时,此应用程序正常工作.但是当我在Android 4.0.3(ICS)模拟器中尝试相同的应用程序时(在清单文件中进行更改后)对于sdk版本)Cursor Finalized without Prior Close()当我尝试执行活动时出错.使用NullPointer异常和应用程序崩溃.

StackTrace pastebin在这里
更新的方法

public int getAllEntries() {
        //int entryCount;
        Cursor cursorE = db.rawQuery("SELECT COUNT(LATS) FROM myPROmapData",
                null);
try {
            if (cursorE.moveToFirst()) {
                return cursorE.getInt(0);
            }   
            return cursorE.getInt(0);
            } finally {
              cursorE.close();
            }
    }

--
public Double[] PopulateLats() {

        //id = getAllEntries();

        int LatcolumnIndex = 0;

        Cursor cursor = db.rawQuery("SELECT LATS FROM myPROmapData", null);
        try {
            Double myLats[] = new Double[cursor.getCount()];;
            if (cursor.moveToFirst()) {

                for (int …
Run Code Online (Sandbox Code Playgroud)

java sqlite android android-cursor

2
推荐指数
1
解决办法
9261
查看次数

游标movetofirst()和空指针异常

我正在使用Cursor来获取存储在SQLite数据库中的一些数据。当我Cursor从数据库中获取一些数据时,代码可以正常工作。但是当Cursor不包含任何数据时,我得到了NullPointerExceptionat cursor.movetofirst()方法。我在其他地方使用过类似的代码,但movetofirst()方法在NullPointerException其他地方未给出。几天以来,我一直在尝试此操作,但无法确定问题出在哪里。请帮助。

    public class Country extends Activity {

        private DbAdapter mDb;
        private Cursor mCurSugCnt;
        String country=null;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.country);

            mDb=new DbAdapter(this);
            mDb.open();

            country= this.getIntent().getExtras().getString("country");
            fillSugCntData(country);

        }

    private void fillSugCntData(String cnt) {
        //I have tried multiple methods. The problem occurs when there is no data returned by any of the methods called
        //mCurSugCnt=mDb.fetchCatNotes("abc");
        mCurSugCnt=mDb.fetchCntNotes(cnt);

        //This is where I called the null …
Run Code Online (Sandbox Code Playgroud)

android android-cursor

2
推荐指数
1
解决办法
5873
查看次数

使用CursorLoader和LoaderManager从Android应用程序中检索图像

目前我正在使用getContentResolver().query()/ managedQuery()来获取光标以从图库应用程序中检索图像.因为我正在使用的API部分弃用,所以我想将CursorLoader与LoaderManager一起使用.

/**
 * Creates a cursor to access the content defined by the image uri for API
 * version 11 and newer.
 * 
 * @return The created cursor.
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private Cursor createCursorHoneycomb() {
    String[] projection = {
            MediaStore.Images.Media.DATA
    };
    Cursor cursor = getContentResolver().query(imageUri, projection, null, null, null);

    return cursor;
}

/**
 * Creates a cursor to access the content defined by the image uri from API
 * version 8 to 10.
 * 
 * @return The created cursor.
 */ …
Run Code Online (Sandbox Code Playgroud)

android android-cursor android-loadermanager android-cursorloader android-cursoradapter

2
推荐指数
1
解决办法
6886
查看次数

Android"在关闭后尝试访问游标"

我正在尝试调整HelloGridView示例,以便我可以显示存储在SD上的图像的图像缩略图,而不是res/drawable中的图像.我们的想法是首先在ImageView.initialize()函数中创建一个包含图像的列表,并使用它与示例中的完全一样.

我的光标出现问题,首先我尝试在Imageview.initialize()函数中将其设置为私有(它只是注释掉了,所以你可以看到我在哪里)因为对我来说它似乎只是被使用了然后我得到错误"在关闭后尝试访问游标".在行的onCreate()函数中

gridview.setAdapter(imageAdapter);

所以这条线显然以某种方式使用它.接下来的尝试是将光标设置为"全局"并在该行之后关闭它,但我得到相同的错误但现在当我离开onCreate()时.这就是现在代码的方式,我不知道该怎么做.此外,如果你发现其他任何看起来很奇怪的东西,请告诉我,因为我在android和java非常新.

package se.mmarks.hellogridview;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {

    private Cursor imagecursor;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        GridView gridview = (GridView) findViewById(R.id.gridview);
        ImageAdapter imageAdapter = new ImageAdapter(this, imagecursor);
        imagecursor = imageAdapter.initialize();
        gridview.setAdapter(imageAdapter);
        /* setAdapter needs the cursor,
         * this is why it is closed …
Run Code Online (Sandbox Code Playgroud)

android adapter android-imageview android-gridview android-cursor

2
推荐指数
1
解决办法
6769
查看次数

按姓名搜索联系人

我正在尝试创建一个自定义联系人应用程序,它只显示那些具有Contact Number 的联系人。首先,有没有什么自动化的方法来做到这一点?假设不是,那么我正在尝试按名称搜索联系人,例如Rohan

这是代码:-

Cursor photoCursor = getContentResolver().query(
            android.provider.ContactsContract.Contacts.CONTENT_URI,
            new String[] { ContactsContract.Contacts.PHOTO_ID,
                    ContactsContract.Contacts.DISPLAY_NAME },
            ContactsContract.Contacts.DISPLAY_NAME + " = ?",
            new String[]{"Rohan"}, null);
    photoCursor.moveToFirst();
    while (photoCursor.moveToNext()) {
        Log.d("Photo Thumbnail", "" + photoCursor.getString(1));
    }
Run Code Online (Sandbox Code Playgroud)

虽然联系人存在,但我没有收到任何日志,如果我删除Selection & Selection Args,我会在日志中看到Rohan。我究竟做错了什么?

android android-contacts android-cursor android-search

2
推荐指数
1
解决办法
1万
查看次数

从库中选择图像,对于某些设备,它为null

我从下面的代码中获取图库中的图像

 Uri filePath = data.getData();
 String[] filePathColumn = {MediaStore.Images.Media.DATA,
                    MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.MIME_TYPE};
            Cursor cursor =
                    mCon.getContentResolver().query(filePath, filePathColumn, null, null, null);
Run Code Online (Sandbox Code Playgroud)

但是当我在某些设备中从文件探索中选择图像时,光标始终为空,但如果我从图库应用程序中选择相同的图像则可以工作......为什么会这样?

android android-cursor

2
推荐指数
1
解决办法
1749
查看次数