标签: matrixcursor

何时使用CursorJoiner/MatrixCursor/MergeCursor?

我正在探索从两个或多个连接表中优雅地获取数据的不同方法.

我相信MergeCursor,(Android开发人员指南)似乎暗示可以(例如)SQL UNION通过连接两个查询(或单独添加视图作为行等)来替换等价物- 所以,不是我想要的.

但我不知道究竟是什么CursorJoiner,MatrixCursor是为了什么,或者如何使用它们.我看了他们的来源(和往常一样)对我来说没什么意义!我发现它们在使用中的例子没有清楚地解释产生的效果是什么.我真的很感激它们的良好描述,以及它们可能被使用的背景.

android matrixcursor mergecursor

37
推荐指数
1
解决办法
9628
查看次数

在ListView中使用带有文本和图像的MatrixCursor和SimpleCursorAdapter

我有一个问题,使用MatrixCursor填充我的ListView:

private void fillData() {
    String[] menuCols = new String[] { "icon", "item", "price" };
    int[] to = new int[] { R.id.icon, R.id.item, R.id.price };

    MatrixCursor menuCursor = new MatrixCursor(menuCols);
    startManagingCursor(menuCursor);

    menuCursor.addRow(new Object[] { R.drawable.chicken_sandwich, "Chicken Sandwich", "$3.99" });

    SimpleCursorAdapter menuItems = new SimpleCursorAdapter(
            this, R.layout.menu_row, menuCursor, menuCols, to);

    setListAdapter(menuItems);
}
Run Code Online (Sandbox Code Playgroud)

构造SimpleCursorAdapter崩溃的原因.即使我尝试删除图标,应用程序仍然崩溃.这是我的menu_row.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <ImageView 
        android:id="@+id/icon"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
    </ImageView>
    <TextView 
        android:id="@+id/item" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
    </TextView>
    <TextView 
        android:id="@+id/price" 
        android:layout_width="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

java android matrixcursor

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

通过内容提供程序传递二进制blob

我有一个内容提供程序,它是我的Android应用程序集自定义的,它需要公开的一个东西是一个小的(20-30 KiB)字节数组.这些blob的URI如下所示:

content://my.authority/blob/#
Run Code Online (Sandbox Code Playgroud)

#行号在哪里; 生成的游标具有标准_id列和数据列.我MatrixCursor在提供者的query()方法中使用a :

byte[] byteData = getMyByteData();
MatrixCursor mc = new MatrixCursor(COLUMNS);
mc.addRow(new Object[] { id, byteData });
Run Code Online (Sandbox Code Playgroud)

后来,在使用数据的应用程序中,我做:

Cursor c = managedQuery(uri, null, null, null, null);
c.moveToFirst();
byte[] data = c.getBlob(c.getColumnIndexOrThrow("data"));
Run Code Online (Sandbox Code Playgroud)

但是,数据不包含原始字节数组的内容; 相反,它包含类似的内容[B@435cc518,它看起来更像是数组的地址而不是内容.我尝试将字节数组包装在一个实现中java.sql.Blob,认为它可能正在寻找,因为内容提供者子系统被编写为易于与SQLite一起使用,但它没有帮助.

有没有人得到这个工作?如果数据是在文件系统中,也有方法ContentProvider,我可以用它来提供编组InputStream到客户端,但数据我想回送生活作为内容提供者的APK资源.

java android android-contentprovider android-cursor matrixcursor

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

使用addrow for MatrixCursor,如何添加不同的对象类型?

我正在尝试将数据从a输入List<ParseObject>到游标.ParseObject文档可以在这里找到.

我发现您可以使用MatrixCursor执行此操作,请参阅有用的网站:http: //developer.android.com/reference/android/database/MatrixCursor.html

如何为Spinner的SimpleCursorAdapter或Cursor插入额外的元素?

如何创建Cursor数据而不从Android应用程序中的DataBase获取数据?

我的问题是,当我从MyContentProvider.java返回游标时,我尝试做一个cursor.getFloat(),它返回一个String,我不能对它做DecimalFormat.

题:

如何使用addRow(Object [] columnValues)将多种数据类型放入MatrixCursor?

使用Cursor数据的方法:

public void getData() {
    Cursor cursor = getContentResolver().query(URI, null, mParseId, null, null);

    DecimalFormat df = new DecimalFormat();
    df.setMinimumFractionDigits(2);

    mTextview.setText(df.format(
        cursor.getFloat(cursor.getColumnIndexOrThrow("number"))));
}
Run Code Online (Sandbox Code Playgroud)

MyContentProvider.java:

@Override
public Cursor query(Uri uri, String[] projection, String selection,
        String[] selectionArgs, String sortOrder) {
  ......
  MatrixCursor mc = new MatrixCursor(new String[] { "_id", "title", "number" });

  mc.addRow(new String[] { ParseObject.getString("id"), ParseObject.getString("title"), ParseObject.getString("number") });
  return mc;
}
Run Code Online (Sandbox Code Playgroud)

我想在MyContentProvider.java中做什么:

@Override
public Cursor query(Uri …
Run Code Online (Sandbox Code Playgroud)

android cursor android-contentprovider matrixcursor

5
推荐指数
1
解决办法
3832
查看次数

具有非db内容提供程序的Matrixcursor

我有一个内容提供程序,它返回query()方法的MatrixCursor.

Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
{
   MatrixCursor cursor = new MatrixCursor(new String[]{"a","b"});
   cursor.addRow(new Object[]{"a1","b1"});
   return cursor;
}
Run Code Online (Sandbox Code Playgroud)

在LoaderManager的onLoadFinished()回调方法中,我使用游标数据来更新文本视图.

public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
    cursor.moveToFirst();
    String text = (String) textView.getText();
    while (!cursor.isAfterLast()) {
        text += cursor.getString(1);
        cursor.moveToNext();
    }
    textView.setText(text);

}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,如何向MatrixCursor添加一个新行,它将立即通知对LoaderManager的回调方法的更改?

我希望,我已经明确了这个问题.提前致谢.

android android-contentprovider matrixcursor android-loadermanager

5
推荐指数
1
解决办法
1598
查看次数

SearchView:从建议监听器获取所选项目

我有一个搜索视图,其中包含由MatrixCursor填充的建议(因为我已经有一个字符串数组).但是我想知道用户正在选择哪个项目.到目前为止,我只能获得用户点击建议列表的位置:

searchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() {
        @Override
        public boolean onSuggestionClick(int position) {
            String selectedItem = (String)mAdapter.getItem(position);
            Log.e("search view", selectedItem);
            return true;
        }
Run Code Online (Sandbox Code Playgroud)

但是我有一个错误:android.database.MatrixCursor无法转换为java.lang.String,我不知道如何解决它.非常感谢任何帮助.

android android-arrayadapter simplecursoradapter matrixcursor searchview

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

如何为Spinner实现MatrixCursor?

我有一个SQLite返回a 的查询Cursor.我希望Cursor通过实现a 来添加一些额外的行MatrixCursor(以便在单击时自动选择保留第一项真实数据).然后我想把它们映射到一个SimpleCursorAdapter.我一直在阅读帖子(和代码),但我仍然觉得如何将它编码为我下面列出的现有代码.

    Cursor cursor = myDB.query(DATABASE_TABLE_NAME, resultColumns, whereClause,
            whereArgs, null, null, null, null);

    // Create Spinner View object from layout resource
    Spinner spinner = (Spinner) findViewById(R.id.spinner);

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
            android.R.layout.simple_spinner_item, // Use a template
                                                  // that displays a
                                                  // text view
            cursor, // Give the cursor to the adapter
            new String[] {"ename"}, // Map the NAME column in the
                                                 // people database to...
            new int[] {android.R.id.text1}); 

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); …
Run Code Online (Sandbox Code Playgroud)

android spinner matrixcursor

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