0

左右に2列のボタンがあります。ユーザーが左ボタンをクリックしてから右ボタンをクリックしたときを比較するコードがあります。ボタンのテキストを比較します。そして、それはうまくいきます。しかし、私には別の問題があります。左側または右側のボタン間を自由に移動して、同じ側のボタンの中でユーザーが何もしなくても、同じ側のボタンを何度でもクリックできるようにする必要があります。これで、たとえば左側の2つのボタンをクリックすると、アクションが実行され、それらが比較されます。私はそれを持つことはできません。ここに私のonclicklistenerとnextQuestionメソッドがあります。

また、重要な場合は、左側と右側のボタンのタグをxmlファイルに設定します。

android:tag = "l" android:tag = "r"

 final OnClickListener clickListener = new OnClickListener() {

            private Button buttonClicked;
            private int brojacKlikova = 0;

            public void onClick(View v) {
                brojacKlikova++;
                if (brojacKlikova < 6) {

                Button button = (Button) v;
                button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x003333));

                if (buttonClicked == null) {
                    // first button is clicked
                    buttonClicked = button;
                } else {
                    // second button is clicked
                    if (buttonClicked.getTag().equals(button.getTag())) {
                        button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x66FF33));
                        buttonClicked.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x66FF33));
                        buttonClicked.setEnabled(false);
                        button.setEnabled(false);
                        counter = counter + 5;
                        score.setText("Poeni: " + counter);
                    } else {
                        button.setEnabled(false);
                        button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFCC99));
                        buttonClicked.getBackground().clearColorFilter();
                    }
                    buttonClicked = null;
                }
                }else{
                brojacKlikova = 0;
                brojacVremena.cancel();
                mHandler.postDelayed(mLaunchTask,2200);
         }
            }
     };

そしてnextQuestion:

public void nextQuestion() {

        brojacIgara = brojacIgara + 1;


        TestAdapter mDbHelper = new TestAdapter(this);
        mDbHelper.createDatabase();

        try{    //Pokusava da otvori db

            mDbHelper.open();  //baza otvorena

            Cursor c = mDbHelper.getTestData(generateWhereClause());

            mAnsweredQuestions.add(c.getLong(0));

            ArrayList<MyStruct> labelsA = new ArrayList<MyStruct>();
            ArrayList<MyStruct> labelsB = new ArrayList<MyStruct>();

            labelsA.add(new MyStruct(c.getString(2), "1")); // this tag should be the same to button that matches
            labelsB.add(new MyStruct(c.getString(3), "1"));
            labelsA.add(new MyStruct(c.getString(4), "2"));
            labelsB.add(new MyStruct(c.getString(5), "2"));
            labelsA.add(new MyStruct(c.getString(6), "3"));
            labelsB.add(new MyStruct(c.getString(7), "3"));
            labelsA.add(new MyStruct(c.getString(8), "4"));
            labelsB.add(new MyStruct(c.getString(9), "4"));
            labelsA.add(new MyStruct(c.getString(10), "5"));
            labelsB.add(new MyStruct(c.getString(11), "5"));
            labelsA.add(new MyStruct(c.getString(12), "6"));
            labelsB.add(new MyStruct(c.getString(13), "6"));
            labelsA.add(new MyStruct(c.getString(14), "7"));
            labelsB.add(new MyStruct(c.getString(15), "7"));
            labelsA.add(new MyStruct(c.getString(16), "8"));
            labelsB.add(new MyStruct(c.getString(17), "8"));

            Collections.shuffle(labelsA);
            Collections.shuffle(labelsB);

            if (brojacIgara < 4){

            pitanje.setText(c.getString(1));

            a1.setText(labelsA.get(0).label);
            a1.setTag(labelsA.get(0).tag);
            a1.setOnClickListener(clickListener);
            a1.getBackground().clearColorFilter();
            a1.setEnabled(true);
            b1.setText(labelsB.get(0).label);
            b1.setTag(labelsB.get(0).tag);
            b1.setOnClickListener(clickListener);
            b1.getBackground().clearColorFilter();
            b1.setEnabled(true);
            a2.setText(labelsA.get(1).label);
            a2.setTag(labelsA.get(1).tag);
            a2.setOnClickListener(clickListener);
            a2.getBackground().clearColorFilter();
            a2.setEnabled(true);
            b2.setText(labelsB.get(1).label);
            b2.setTag(labelsB.get(1).tag);
            b2.setOnClickListener(clickListener);
            b2.getBackground().clearColorFilter();
            b2.setEnabled(true);
            a3.setText(labelsA.get(2).label);
            a3.setTag(labelsA.get(2).tag);
            a3.setOnClickListener(clickListener);
            a3.getBackground().clearColorFilter();
            a3.setEnabled(true);
            b3.setText(labelsB.get(2).label);
            b3.setTag(labelsB.get(2).tag);
            b3.setOnClickListener(clickListener);
            b3.getBackground().clearColorFilter();
            b3.setEnabled(true);
            a4.setText(labelsA.get(3).label);
            a4.setTag(labelsA.get(3).tag);
            a4.setOnClickListener(clickListener);
            a4.getBackground().clearColorFilter();
            a4.setEnabled(true);
            b4.setText(labelsB.get(3).label);
            b4.setTag(labelsB.get(3).tag);
            b4.setOnClickListener(clickListener);
            b4.getBackground().clearColorFilter();
            b4.setEnabled(true);
            a5.setText(labelsA.get(4).label);
            a5.setTag(labelsA.get(4).tag);
            a5.setOnClickListener(clickListener);
            a5.getBackground().clearColorFilter();
            a5.setEnabled(true);
            b5.setText(labelsB.get(4).label);
            b5.setTag(labelsB.get(4).tag);
            b5.setOnClickListener(clickListener);
            b5.getBackground().clearColorFilter();
            b5.setEnabled(true);
            a6.setText(labelsA.get(5).label);
            a6.setTag(labelsA.get(5).tag);
            a6.setOnClickListener(clickListener);
            a6.getBackground().clearColorFilter();
            a6.setEnabled(true);
            b6.setText(labelsB.get(5).label);
            b6.setTag(labelsB.get(5).tag);
            b6.setOnClickListener(clickListener);
            b6.getBackground().clearColorFilter();
            b6.setEnabled(true);
            a7.setText(labelsA.get(6).label);
            a7.setTag(labelsA.get(6).tag);
            a7.setOnClickListener(clickListener);
            a7.getBackground().clearColorFilter();
            a7.setEnabled(true);
            b7.setText(labelsB.get(6).label);
            b7.setTag(labelsB.get(6).tag);
            b7.setOnClickListener(clickListener);
            b7.getBackground().clearColorFilter();
            b7.setEnabled(true);
            a8.setText(labelsA.get(7).label);
            a8.setTag(labelsA.get(7).tag);
            a8.setOnClickListener(clickListener);
            a8.getBackground().clearColorFilter();
            a8.setEnabled(true);
            b8.setText(labelsB.get(7).label);
            b8.setTag(labelsB.get(7).tag);
            b8.setOnClickListener(clickListener);
            b8.getBackground().clearColorFilter();
            b8.setEnabled(true);
            }
}
4

2 に答える 2

0
        a1.setText(labelsA.get(0).label);
        a1.setTag(0);
        ...
        b1.setTag(1);
        ...
        a2.setTag(2);

等々。

それらが異なるかどうかを確認するときは、タグを取得してintに変換し、モジュロ(%)を使用して2で除算し、それが列AまたはBであるかどうかを確認します。

タグを取得する必要がある場合は、取得したint / 2をインデックスとして使用して、labels配列を参照してください。

于 2013-03-27T02:24:52.850 に答える
0

左ボタン用に1つのリスナーを設定し、右ボタン用に別のリスナーを設定できます。結果を保持するには、buttonClickedフィールドをリスナーからこのリスナーが埋め込まれているアクティビティに変更する必要があります。各リスナーは、背景ボタンを希望の色に設定し、クリックするたびに他のボタンの背景色をリセットする必要があります。

それがあなたが望むものであるかどうか私に知らせてください。

于 2013-03-27T17:47:40.647 に答える