2

私はこのような状況にあります。

私のレイアウトでは、3 つのボタンと 2 つのラジオボタンを持つ 1 つのラジオグループがあります。ユーザーは 、 を押してbutton1button2ラジオボタンの 1 つを選択する必要があります。その後、ラジオボタンを押すbutton3と、データベースへのクエリが実行されます。

を押すbutton1と、クエリが実行され、結果が MultipleChoiceItems AlertDialog に表示されます。

いくつか質問があります。

複数の選択肢項目

この AlertDialog には 3 つの問題があります。

最初: クエリの結果が AlertDialog に表示されますが、いずれかの項目を押してもチェックボックスにチェックマークが付きません。トースト メッセージで、項目がチェックされていることがわかります。

2 番目: クエリはデータベースに対して実行されますが、クエリによって返されない要素を 1 つ追加できますか? クエリの後で、AlertDialog が , , を示していると想像しOneTwoくださいThree。もう一品追加したいです。This was not returned by the query、、、OneのようなTwoものThree

三番:

public AlertDialog.Builder setMultiChoiceItems (Cursor cursor, String isCheckedColumn, String labelColumn, DialogInterface.OnMultiChoiceClickListener listener)2 番目のパラメーターは、チェックされるアイテムまたはチェックされないアイテムを設定することです。私のデータベースにはこの列がないため、常にゼロとは異なることがわかっている列を 1 つ渡しました。これをバイパスする方法はありますか?

これは私のコードです:

public class MyClass extends ListActivity implements OnClickListener, OnCheckedChangeListener {
    Database db = new Database(this);
    int order;
    boolean groupCheck = false;
    boolean orderCheck = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.n);

        Button proc = (Button) findViewById(R.id.procButtonProc);
        proc.setOnClickListener(this);
        Button pickGroup = (Button) findViewById(R.id.procButtonGroup);
        pickGroup.setOnClickListener(this);
        RadioGroup pickOrder = (RadioGroup) findViewById(R.id.procRadioOrder);
        pickOrder.setOnCheckedChangeListener(this);
    }

    @Override
    public void onClick(View v) {

        if (v.getId() == R.id.procButtonGroup) {

            db.open();
            final Cursor query = db.getData(0, 0, null);
            AlertDialog.Builder pickGroup = new AlertDialog.Builder(this);
            pickGroup.setTitle(getString(R.string.procGroupTitle));

            pickGroup.setMultiChoiceItems(query, "GROUP_NAME", "GROUP_NAME", new DialogInterface.OnMultiChoiceClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    // TODO Auto-generated method stub

                    if (isChecked) {
                        query.moveToPosition(which);
                        String str = query.getString(1).toString();
                        Toast.makeText(MyClass.this, "You have selected " + str, Toast.LENGTH_LONG).show();
                        // ListView list = ((AlertDialog) dialog).getListView();
                        // list.setItemChecked(which, true);

                    }
                }
            });

            pickGroup.setPositiveButton("OK", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                }
            });

            pickGroup.show();
            db.close();

        } 

        if (v.getId() == R.id.procButtonProc) {

            if (orderCheck == true && groupCheck == true) {
                // Based on the conditions, perform query on the database

            } else {
                Toast.makeText(getApplicationContext(), "Select GROUP, N and ORDER", Toast.LENGTH_SHORT).show();
            }
        }
    }

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        // TODO Auto-generated method stub
        switch (checkedId) {
            case R.id.procOrderASC:
                order = 0;
                orderCheck = true;
                break;
            case R.id.procOrderDSC:
                order = 1;
                orderCheck = true;
                break;
        }
    }
}

ありがとう、

お気に入り

4

0 に答える 0