Открытие указанной c активности при нажатии на указанную c карточку - PullRequest
2 голосов
/ 05 мая 2020

У меня есть 5 просмотров карт, данные каждого из которых загружены из моего проекта Firebase. Я хочу, чтобы каждый из них открывал конкретное c действие, но когда я выбираю случайное, запускаются все 5 действий.

Итак, мой вопрос: как открыть конкретное c действие при нажатии на Speci c cardview?

Я следил за этим ответом здесь

My onBindViewHolder():

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
    String strTreatmentImage = treatmentList.get(position).getImage();
    Picasso.get().load(strTreatmentImage).placeholder(R.drawable.ic_circle).into(viewHolder.treatmentImage);

    String strTreatmentName = treatmentList.get(position).getTreatmentName();
    viewHolder.treatmentName.setText(strTreatmentName);

    viewHolder.treatmentCardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent;
            switch (position) {
                case 0:
                    intent = new Intent(context, LashLiftActivity.class);
                    context.startActivity(intent);
                case 1:
                    intent = new Intent(context, BrowsActivity.class);
                    context.startActivity(intent);
                case 2:
                    intent = new Intent(context, NiMesoActivity.class);
                    context.startActivity(intent);
                case 3:
                    intent = new Intent(context, MesoTherapyActivity.class);
                    context.startActivity(intent);
                case 4:
                    intent = new Intent(context, SingleLashesActivity.class);
                    context.startActivity(intent);
                    break;
            }
        }
    });

}

И мой класс ViewHolder:

static class ViewHolder extends RecyclerView.ViewHolder{

    ImageView treatmentImage;
    TextView treatmentName;
    CardView treatmentCardView;

    ViewHolder(@NonNull View itemView) {
        super(itemView);

        treatmentImage = itemView.findViewById(R.id.treatmentThumb);
        treatmentName = itemView.findViewById(R.id.txt_treatmentName);
        treatmentCardView = itemView.findViewById(R.id.treatmentCardView);

        ButterKnife.bind(this, itemView);
    }
}

My CardView xml:

<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
app:cardCornerRadius="10dp"
app:cardElevation="3dp"
android:foreground="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:id="@+id/treatmentCardView">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:divider="@null"
    android:dividerHeight="0dip">

    <ImageView
        android:id="@+id/treatmentThumb"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitCenter"
        android:padding="5dp"
        android:src="@drawable/logo_5"/>

    <TextView
        android:id="@+id/txt_treatmentName"
        android:gravity="center"
        android:textSize="24sp"
        android:text="Treatment name #1"
        android:layout_marginBottom="8dp"
        android:fontFamily="@font/kollektif"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

Пожалуйста, помогите и заранее спасибо.

1 Ответ

2 голосов
/ 05 мая 2020

Вам просто нужно добавить инструкцию break для каждого случая switch; как если бы вы получили совпадение case, в котором нет оператора break, тогда все базовые операторы case по-прежнему будут выполняться.

switch (position) {
    case 0:
        intent = new Intent(context, LashLiftActivity.class);
        context.startActivity(intent);
        break;
    case 1:
        intent = new Intent(context, BrowsActivity.class);
        context.startActivity(intent);
        break;
    case 2:
        intent = new Intent(context, NiMesoActivity.class);
        context.startActivity(intent);
        break;
    case 3:
        intent = new Intent(context, MesoTherapyActivity.class);
        context.startActivity(intent);
        break;
    case 4:
        intent = new Intent(context, SingleLashesActivity.class);
        context.startActivity(intent);
        break;
}
...