Недопустимый результат с checkBox - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь использовать CheckBox в своем приложении. Статус checkBox (отмечен / не отмечен) я использую в putExtra, а затем в следующем действии, в зависимости от результата, который я отправляю query на database. Проблема с многократной проверкой.

public class Myactivity extends AppCompatActivity implements View.OnClickListener{

CheckBox mCheck1;
CheckBox mCheck2;
CheckBox mCheck3;
ImageButton mImageButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_option);

    mImageButton = findViewById(R.id.button_ok_option);
    mCheck1 = findViewById(R.id.checkBox1);
    mCheck2 = findViewById(R.id.checkBox2);
    mCheck3 = findViewById(R.id.checkBox3);

    mImageButton.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    Intent intent = new Intent(this, Choose_meet_activity.class);
    intent.putExtra("1", mCheck1.isChecked());
    intent.putExtra("2", ((mCheck1.isChecked()) && (mCheck2.isChecked()));
    intent.putExtra("3", mCheck2.isChecked());
    startActivity(intent)
}
}

Например, если я использую mCheck1 - в результатах поиска в базе данных с "colour":"red", mCheck2 - "size":"big". Когда я нажимаю Check1 - все хорошо, все результаты с "red" приходят ко мне. И тот же положительный результат с mCheck2, то есть при любых условиях. Но когда я нажал mCheck1 && mCheck2 - все результаты с цветом: "red", даже если "size" не "big" возвращаются ко мне. Что случилось?

РЕДАКТИРОВАНИЕ: Choose_meet_activity.class:

public class Choose_meet_activity extends AppCompatActivity {

public RecyclerView mResultList;
public FirebaseFirestore mFirestore;
public com.google.firebase.firestore.Query query;
public FirestoreRecyclerAdapter<Places, PlaceViewHolder> firestoreRecyclerAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_recycle_activity);
    mResultList = findViewById(R.id.list_result);

    Boolean l_check1 = getIntent().getExtras().getBoolean("1");
    Boolean l_check2 = getIntent().getExtras().getBoolean("2");
    Boolean l_check3 = getIntent().getExtras().getBoolean("3");

mFirestore = FirebaseFirestore.getInstance();
if (l_check1) {
            query = mFirestore.collection("Places").whereEqualTo("colour", "red");
}else if (l_check2) {
            query = mFirestore.collection("Places").whereEqualTo("colour", "red").whereEqualTo("size", "big");
}else if (l_check3) {
            query = mFirestore.collection("Places").whereEqualTo("size", "big");
} //...

1 Ответ

0 голосов
/ 03 мая 2018

Вы должны выбрать свой if-else с умом.

if (l_check2) {
        query = mFirestore.collection("Places").whereEqualTo("colour", "red").whereEqualTo("size", "big");
} 
else if (l_check1) {
        query = mFirestore.collection("Places").whereEqualTo("colour", "red");
}
else if (l_check3) {
        query = mFirestore.collection("Places").whereEqualTo("size", "big");
}

Переход от нескольких проверенных к одному проверенному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...