标签: android-cursor

Android中的倒置ListView?

有一种简单的方法以相反的顺序显示ListView吗?我正在尝试创建一个基于会话的应用程序,并希望最近的条目位于ListView的底部.我知道transcriptMode和stackFromBottom,但我的问题是数据的顺序.

假设我有100个会话项目,并且想要显示项目80-100,其中100是最近的会话项目.我想显示80-100,这意味着我的查询中的ORDER BY id desc LIMIT 20,它强制将项目排序100到80,与我需要的相反.我目前有一些讨厌的内部查询代码,但感觉应该有一个更简单的解决方案基于反转光标或简单地反转ListView.

android android-widget android-listview android-cursor

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

getSupportLoaderManager()在不同的片段中使用相同的ID?

我在FragmentActivity中使用多个ListFragments创建一个viewPager.为了填充不同的列表视图,我在加载器中获得LoaderManager和initiliaze.我希望每个片段都有一个唯一的LoaderManager,但是,片段没有getSupportLoaderManager()方法,所以我需要调用父片段活动:

getActivity().getSupportLoaderManager()
Run Code Online (Sandbox Code Playgroud)

我的Loaders在不同片段中识别的这种方法的问题与彼此冲突.当你已经在一个片段中拥有多个加载器id时,它会变得有点麻烦.那么有没有办法为每个片段获取一个唯一的LoaderManager,而不是调用父片段?我基本上希望能够在多个片段上使用相同的id.

谢谢

android android-cursor android-listfragment android-loadermanager android-support-library

8
推荐指数
2
解决办法
6086
查看次数

IllegalStateException:尝试使用ContentProvider查询数据库时无效的表

尝试使用ContentProvider下面显示的自定义查询我的数据库时,我收到以下错误.

我已经确认该表存在正确的名称,但仍然无效.

我能够使用原始查询,但我希望我们ContentProvider实践的模式.

谢谢,如果您需要更多信息,请与我们联系.


SQLiteOpenHelper

public class DatabaseHelper extends SQLiteOpenHelper {

    private static final String TAG = DatabaseHelper.class.getSimpleName();

    private static final String DB_PATH = 
            "/data/data/ashton.android.personal.worktc/databases/";

    private static final String DB_NAME = "worktc.db";

    private static final int DB_VERSION = 1;

    private SQLiteDatabase myDatabase;

    private final Context context;

    public DatabaseHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        this.context = context;
    }

    /**
     * Creates a empty database on the system and rewrites it with your own database.
     * */ …
Run Code Online (Sandbox Code Playgroud)

database sqlite android android-contentprovider android-cursor

7
推荐指数
1
解决办法
4270
查看次数

android光标到JSONArray

如何将光标"转换"为JSONArray?

我的光标为3columns(_id,name,birth)

我搜索过,但我找不到任何例子

android json android-cursor

7
推荐指数
3
解决办法
9124
查看次数

光标窗口分配2048 kb失败.#Open Cursors = 1(此proc = 1打开的#游标)

我正在制作一个使用数据库的Kiosk应用程序.该应用程序一直在前台运行.该应用程序有许多使用一个共享DataBaseHelper实例的线程.该应用程序完美无缺,但大多数时间在5或6小时后,我遇到这些异常,然后应用程序崩溃:

E/DataBaseHelper:2048 kb的游标窗口分配失败.#Open Cursors = 1(此proc = 1打开的#游标)

E/CursorWindow:由于错误-24,无法分配大小为2097152的CursorWindow'/data/user/0/com.kios.frm/databases/YadProjectDB.db'.

E/SQLiteLog:(14)无法打开[00bb9c9ce4]第30192行的文件

E/SQLiteLog:(14)语句中止16:[SELECT number FROM sms LIMIT 5]无法打开数据库文件

E/SQLiteQuery:异常:无法打开数据库文件(代码14);
查询:SELECT编号FROM sms LIMIT 5

E/SQLiteLog:(14)os_unix.c:30192:(24)
open(/data/user/0/com.kiosk.frm/databases/YadProjectDB.db-journal) -

我正确关闭了光标,但仍然获得了这些异常.那些例外是什么?这些例外的原因是什么?

主要活动

private DataBaseHelper db = null; // Global     
Run Code Online (Sandbox Code Playgroud)

MainActivity onCreate方法:

db = new DataBaseHelper(this);

new Thread(new Runnable() {
@Override
public void run() {
    while (threadRunningFlag) {

    Cursor result = null;
    try {

        result = db.getData("SELECT " + DataBaseHelper.SMS_COLUMN_PHONE_NUMBER  + " FROM " + DataBaseHelper.SMS_TABLE_NAME + " LIMIT 5");
        if (result != null && result.getCount() > …
Run Code Online (Sandbox Code Playgroud)

database android android-cursor android-sqlite android-4.4-kitkat

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

特定片段中的Android游标窗口内存错误

我有一个Android应用程序,它使用服务每5ms收集传感器数据并将其插入sqlite表.在典型的会话中,将有大约40分钟的录音.所有这些代码似乎都运行良好.

我有一个奇怪的问题,如果用户导航到特定的片段,我会收到CursorWindow: Window is full: requested allocation XXX错误.我不确定导致该错误的特定片段有什么特别之处,并且只发生在这个片段中

有问题的片段包含一个按钮,点击该按钮时会执行以下操作:

  • 在外部存储上创建一些目录
  • 复制临时表中的所有传感器数据,并将其插入更永久的表中
  • 将整个.db文件的副本创建到外部存储
  • 获取表的内容并将其写入CSV文件
  • 查询另一个传感器数据表,并将所有传感器数据写入另一个CSV文件
  • 使用媒体扫描程序扫描导出目录中的所有文件,以便可以通过MTP访问它们

片段代码看起来像这样(为简洁起见,许多catch块都被省略了 - 它们大多只是记录信息):

public class SaveFragment extends Fragment implements View.OnClickListener {

    Button saveButton;
    MainActivity mainActivity;
    DBHelper dbHelper;
    Boolean subjectDataExists;
    MediaScanner mediaScanner;
    static ProgressDialog dialog;

    public SaveFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_save, container, false);

        //Get save button view
        saveButton = (Button) view.findViewById(R.id.saveButton);
        saveButton.setOnClickListener(this);

        //Get DBHelper
        dbHelper …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-fragments android-cursor android-sqlite

7
推荐指数
0
解决办法
187
查看次数

使用CursorLoader查询专辑的歌曲

我想通过查询获得的一张专辑的歌曲列表MediaStoreCursorLoader

我怎样才能做到这一点 ?我可以使用以下代码获取设备的所有歌曲:

static final String[] TRACK_SUMMARY_PROJECTION = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE}; 

public Loader<Cursor> onCreateLoader(int id, Bundle args) {  
    String sortOrder = MediaStore.Audio.Media.TITLE + " ASC";
    String select = null;  
    return new CursorLoader(getActivity(), MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,  
                    TRACK_SUMMARY_PROJECTION, select, null,  
                    sortOrder);  
}  
Run Code Online (Sandbox Code Playgroud)

我应该添加什么代码或修改来过滤特定专辑的歌曲?

android android-cursor android-cursorloader

6
推荐指数
1
解决办法
8560
查看次数

如何从android中选择独特的联系人

我想从Android只选择具有电话号码的联系人的唯一联系人.我正在使用此代码

ContentResolver cr = getContentResolver();
        Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
                null, null, ContactsContract.Contacts.DISPLAY_NAME);
        // Find the ListView resource.
        mainListView = (ListView) findViewById(R.id.mainListView);

        // When item is tapped, toggle checked properties of CheckBox and
        // Planet.
        mainListView
                .setOnItemClickListener(new AdapterView.OnItemClickListener()
                {
                    public void onItemClick(AdapterView<?> parent, View item,
                            int position, long id)
                    {
                        ContactsList planet = listAdapter.getItem(position);
                        planet.toggleChecked();
                        PlanetViewHolder viewHolder = (PlanetViewHolder) item
                                .getTag();
                        viewHolder.getCheckBox().setChecked(planet.isChecked());
                    }
                });

        // Create and populate planets.
        planets = (ContactsList[]) getLastNonConfigurationInstance();
        // planets = new Planet[10]; …
Run Code Online (Sandbox Code Playgroud)

android contacts android-contentprovider android-contacts android-cursor

6
推荐指数
1
解决办法
7385
查看次数

Intent.ACTION_GET_CONTENT 打开最近的文件,这给出了一个错误的 URI

我正在使用Intent.ACTION_GET_CONTENT它打开最近的文件。从最近的文件中选择项目会产生错误的 URI,但从文件管理器中选择相同的文件会提供正确的 URI,可以由我的代码处理。

public static String getRealPathFromURI(Context context, Uri uri) {
    String path;
    if ("content".equals(uri.getScheme())) {
        Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
        cursor.moveToFirst();
        int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
        path = cursor.getString(idx);
        cursor.close();
    } else {
        path = uri.getPath();
    }

    return path;
}
Run Code Online (Sandbox Code Playgroud)

注意:uri.getPath()当我从最近的文件中选择 PDF 时的输出是/document/...但从文件管理器中选择相同的文件时,.../emulated/....

注意:从最近的文件中选择文件时的错误是

无法从 CursorWindow 读取第 0 行、第 -1 行。在访问 Cursor 中的数据之前,确保它已正确初始化。

android android-intent android-contentresolver android-cursor

6
推荐指数
1
解决办法
1907
查看次数

SQLite - 跨数据库查询无法正常工作

我想在Android中的SQLite中执行跨数据库查询.我在两个不同的数据库中有两个表.

attach database 'data/data/com.app/databases/db1' as db1; 
attach database 'data/data/com.app/databases/db2' as db2; 
SELECT db1.tbl1.* FROM db1.tbl1 JOIN db2.tbl2 ON db1.tbl1.primaryKey = db2.tbl2.primaryKey 
WHERE db1.tbl1.columnX = ?  AND db2.tbl2.columnY  = ? 
Run Code Online (Sandbox Code Playgroud)

通过Android rawQuery方法调用此查询,如:

Cursor cursor = sqLiteDatabase.rawQuery(selectQuery, new String[]{"1","xyz"});
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

SQLiteException: bind or column index out of range: handle 0xa6259ec8
Run Code Online (Sandbox Code Playgroud)

我检查了查询的语法,这是正确的.是不是可以在Android中执行跨数据库查询?

database sqlite android android-cursor android-sqlite

6
推荐指数
1
解决办法
230
查看次数