1

私のAppでは、学生のマークを に保存し、それらを に表示しようとしていました。SQLite Table学生のマークをそれぞれ 89、78、90、100 に入力すると、注文の 機能もあり、この後、マークを並べ替えたいと思います昇順で 100 点の生徒の名前がリストの一番上にあり、次に 78 点、89 点、90 点の生徒が次々とリストに表示されますが、なぜこのバグが発生するのですか? 私のDBスキーマは次のとおりです。ListViewAppSORTList

public static final String COL_ID = "_id";
public static final String COL_NAME = "name";
public static final String COL_ADDRESS = "address";
public static final String COL_MARKS = "marks";


protected static final String CREATE_QUERY = "CREATE TABLE " + FRIEND_TABLE +
        " (" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "   +
        COL_NAME + " TEXT, " + COL_ADDRESS + " TEXT," +
        COL_MARKS + " TEXT)";

並べ替えロジックはPrefrenceActivity次のようになります。

<?xml version="1.0" encoding="utf-8"?>


<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<ListPreference
        android:dialogTitle="Choose a sort order"
        android:key="sort_order"
        android:summary="Choose your preferred sort order"
        android:title="Sort Order" 
        android:entries="@array/sort_names"
        android:entryValues="@array/sort_clauses"/>

</PreferenceScreen>

配列は次のとおりです。

<string-array name="sort_names">
    <item>By Name, Ascending</item>
    <item>By Name, Descending</item>
    <item>By Roll</item>
    <item>By Address, Ascending</item>
    <item>By Address, Descending</item>
</string-array>
<string-array name="sort_clauses">
    <item>name ASC</item>
    <item>name DESC</item>
    <item>marks ASC</item>
    <item>address ASC</item>
    <item>address DESC</item>
</string-array>

この言及されたバグの解決策を誰でも見つけることができますか!

4

1 に答える 1

4

これは SQLite や Android のバグではなく、データベース スキーマのバグです。marks列を次のように定義し、数値が数値の後に並べ替えられても、文字列は文字TEXT"100"の前に"89"(昇順で) 並べ替えられます。同じ理由で、ソートは降順で後方に検索します。列はおそらく である必要があり、並べ替えは期待どおりに機能します。10089marksinteger

于 2013-07-09T03:19:02.183 に答える