0

これらの列を持つデータベースがあります

|Name|Quantity|Price|Type|Eta|Language|
|Farmakon|200.1mg|35€|F|2|EN|
|Botron|13g|35€|F|15|ES|
|Botron|10g|31€|F|13|ES|
|Puller|0.50mg|35€|T|1|EN|
|Rovtres|7.2cl|35€|BN|12|UK|

私はこのカーソルを使用します

Cursor c = mDb.rawQuery(
                        "SELECT Id AS _id, Name, Quantity, Price, FROM mytable "
                                + "WHERE Type LIKE ? AND Eta LIKE ? AND Language LIKE ? ORDER BY Name",
                        new String[] { "%" + type + "%", "%" + eta + "%",
                                "%" + language + "%" });

値を取得するには

|Name|Quantity|Price|
|Botron|10g|31€|F|13|ES|
|Botron|13g|35€|
|Farmakon|200.1mg|35€|
|Puller|0.50mg|35€|
|Rovtres|7.2cl|35€|

これは、グリッドの設定に使用されます

このコードを使用して、グリッドに SimpleCursorAdapter を設定します。

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
        R.layout.row, c, cols, views);

ここで、名前に従って数量の値を乗算する必要があります。たとえば、測定単位g、mgなどを維持する10.1の場合、 Botronのすべての数量の行を乗算する必要があります。

グリッドにデータを入力する必要があるため、この種の操作は Cursor c で行う必要があります。

どうすればこの問題を解決できますか?

4

3 に答える 3

1

Because I have to populate the grid this kind of operation should be done in the Cursor c.

You can't modify the Cursor but you could use a simple ViewBinder on the adapter to do the extra calculation:

    adapter.setViewBinder(new ViewBinder() {

        @Override
        public boolean setViewValue(View view, Cursor cursor,
                int columnIndex) {
            if (view.getId() == R.id.theidOfTheViewWithTheQuantity) {
                // get the quantity from the Cursor, but I don't know how you stored it
                float quantity = cursor.getFloat(columnIndex);
                // get the name
                String name = cursor.getString(cursor.getColumnIndex(the_column_name));
                if (name.equals("Botron" )) {
                    quantity = quantity * 10.0f;
                    ((TextView)view).setText(String.valueOf(quantity));
                }
                return true;
            }
            return false;
        }

    });
于 2012-12-16T15:22:32.627 に答える
0

からへのSimpleCursorAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder()ロード中に値を変更するために使用できます。cursorGrid

于 2012-12-16T15:19:25.967 に答える
0

SQLite がクエリの一部として関数をサポートしているかどうかわからないので、CursorAdapterを拡張し、メソッドで乗算を実行することをお勧めしますbindView()

于 2012-12-16T15:16:42.253 に答える