0

リストビューにデータベースの結果を入力しているときに、アプリケーションで最も奇妙な問題が発生しています。そのため、データベースに送信する2つの基準を選択
できるアラートダイアログがあります。カテゴリ製品(レストラン、店舗など)と支払いオプション(カード/現金)です。

ユーザーが何かを選択すると、次のようにString変数を特定の間隔(categoryIntervalおよびpaymentInterval)に設定します。

カテゴリの場合(ポップアップメニューにあります):

case R.id.item11c:
                            filterTitle = "Bakery and Pastry Shops ";
                            categoryInterval = "('" + 86 + "','" + 87 + "')"; 
                            filterButton.setText("Bakery and Pastry shops");
                            return true;

支払いオプションの場合(ラジオボタンにあります):

OnClickListener radiobutton_no_listener = new OnClickListener() {
    public void onClick(View v) {
        paymentInterval = "('" + "')";
    }
};

OnClickListener radiobutton_yes_listener = new OnClickListener() {
    public void onClick(View v) {
        paymentInterval = "('" + "visa" + "','" + "master" + "')";
    }
};

次に、ユーザーが選択してアラートダイアログの[OK]ボタンをクリックすると、クエリメソッドfindFilterInTable()を呼び出す表示メソッドがあります(この場合、次のいずれかを持つ要素を検索することが目的です。番号86または87のカテゴリ列と「ビザ」または「マスター」が入った支払い列)で、結果がリストビューに表示されます。

public Cursor findFilterInTable(String categoryInterval,
        String paymentInterval) {
    String where = COL_CAT1 + " IN " + categoryInterval + " OR " + COL_CAT2
            + " IN " + categoryInterval + " OR " + COL_CAT3 + " IN "
            + categoryInterval + " AND " + COL_PAYMENT + " IN "
            + paymentInterval;

    Cursor c = myDatabase.query(DATABASE_TABLE, new String[] { KEY_ROWID,
            COL_NAME, COL_STREET, COL_WEBSITE, COL_PAYMENT, COL_TELEPHONE,
            COL_PRICE, COL_REMARKS, COL_DATEFRIENDLY }, where, null, null,
            null, null);
    return c;
}

ただし、部分的にしか機能しません。カテゴリ部分(categoryIntervalのCOL_CAT1または....のCOL_CAT2)では完全に機能しますが、支払い部分では、奇妙な結果になります。このボタン(カードによる支払い)をクリックすると、クリックしなかった場合と比較してリストからいくつかの結果が取得されますが、調査にまったく関係のないものは取得されます。私がpaymentInterval( "visa"または"master"と"okokininjfnsoe")に何を書いても、カテゴリ部分の数字の特定の組み合わせを持ついくつかの要素を取得するだけのようです。たとえば、この場合、CAT_3 = 87の要素は、意味がありません。
したがって、findFilterInTable()メソッドのpaymentIntervalの値は結果に影響しますが、適切な列(COL_PAYMENT)も調べませんが、COL_CAT1、COL_CAT2、COL_CAT3で、何らかの理由でいくつかの結果を削除します。

私はこれに本当に腹を立てており、解決策を見つける方法がわかりません。私は実際に私が理解していない問題を解決する方法を知りません、そしてそれは私には意味がありません!読んでくれてありがとう。

4

1 に答える 1

1

変化する

String where = COL_CAT1 + " IN " + categoryInterval + " OR " + COL_CAT2
        + " IN " + categoryInterval + " OR " + COL_CAT3 + " IN "
        + categoryInterval + " AND " + COL_PAYMENT + " IN "
        + paymentInterval;  

String where = "(" + COL_CAT1 + " IN " + categoryInterval + " OR " + COL_CAT2
        + " IN " + categoryInterval + " OR " + COL_CAT3 + " IN "
        + categoryInterval + ") AND " + COL_PAYMENT + " IN "
        + paymentInterval;
于 2013-03-27T03:34:28.787 に答える