Как реализовать onClickItem для элементов RecyclerView (показывая детали элементов) - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть RecyclerView с элементами (Поездки) внутри, и я хочу, чтобы, когда я щелкаю по любому элементу, запускалось новое действие (действие по сведениям о поездке), показывающее детали конкретного элемента с использованием firebase. вот разделы моего кода.

MainActivity код:

private void showData() {
    //R4
    options4 = new FirebaseRecyclerOptions.Builder<Model4>().setQuery(mDatabaseReference4,Model4.class).build();
    firebaseRecyclerAdapter4 = new FirebaseRecyclerAdapter<Model4, ViewHolder4>(options4) {
    @Override
    protected void onBindViewHolder(@NonNull ViewHolder4 holder, int position, @NonNull final Model4 model) {
        holder.setString(getApplicationContext(),model.getTrippic(),model.getTriptitle(),model.getTripprice(),model.getTripdesc());
        holder.setOnClickListener4(new ViewHolder4.ClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Intent intent = new Intent (MainActivity.this,Tour_Details_page.class);
                intent.putExtra("TripID", model.getTripID());
                startActivity(intent);
            }

            @Override
            public void onItemLongClick(View view, int position) {

            }
        });
    }

    @NonNull
    @Override
    public ViewHolder4 onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        final View itemView4 = LayoutInflater.from(parent.getContext()).inflate(R.layout.hotdealsrow,parent,false);
        final ViewHolder4 viewHolder4 = new ViewHolder4(itemView4);
        viewHolder4.setOnClickListener4(new ViewHolder4.ClickListener() {
            @Override
            public void onItemClick(View view, int position) {

            }

            @Override
            public void onItemLongClick(View view, int position) {
                Toast.makeText(MainActivity.this,"Long Click",Toast.LENGTH_SHORT).show();
            }
        });
        return viewHolder4;
    }
};

Просмотр кода владельца (для RecyclerView):

package com.kathentoursapp;

import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.google.firebase.firestore.DocumentSnapshot;
import com.squareup.picasso.Picasso;

public class ViewHolder4 extends RecyclerView.ViewHolder {
    View mView3;
    RatingBar ratingBar;

    public ViewHolder4(@NonNull final View itemView3) {
        super(itemView3);

        mView3 = itemView3;

        itemView3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mClickListener4.onItemClick(view,getAdapterPosition());
            }
        });
        itemView3.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                mClickListener4.onItemLongClick(view,getAdapterPosition());
                return true;
            }
        });

    }

    public  void  setString(Context ctx, String Trippic , String Triptitle, String Tripprice,String Tripdesc  ){

        TextView mTriptitle = mView3.findViewById(R.id.titlename);
        ImageView mTrippic = mView3. findViewById(R.id.newspic);
        TextView mTripdesc = mView3.findViewById(R.id.exerptname);
        TextView mTripprice = mView3.findViewById(R.id.price);

        mTriptitle.setText(Triptitle);
        mTripdesc.setText(Tripdesc);
        mTripprice.setText(Tripprice);

        Picasso.get().load(Trippic).into(mTrippic);

    }
    private ViewHolder4.ClickListener mClickListener4;
    public  interface  ClickListener {
        void onItemClick(View view, int position);
        void onItemLongClick(View view, int position);
    }

    public  void  setOnClickListener4(ViewHolder4.ClickListener clickListener4){
        mClickListener4 = clickListener4;
    }
}

Tour_Details_Activity код:

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;

public class Tour_Details_page extends AppCompatActivity {

    private ImageView imageView;
    private TextView mTriptitle,mTripdesc,mTripprice;
    int Trippic;
    private String TripID = "" ;

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

        imageView = findViewById(R.id.imageView2);
        mTriptitle= findViewById(R.id.Triptitle1);
        mTripdesc= findViewById(R.id.Tripdesc);
        mTripprice= findViewById(R.id.Tripprice);

        TripID = getIntent().getStringExtra("TripID");

        //Trippic=getIntent().getIntExtra("Trippic",0);
        //imageView.setImageResource(Trippic);

        getTourDetails(TripID);

    }

    private void getTourDetails(String TripID) {

      DatabaseReference TourRef = FirebaseDatabase.getInstance().getReference().child("Trips");

      TourRef.child(TripID).addValueEventListener(new ValueEventListener() {
          @Override
          public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
              if (dataSnapshot.exists())
              {
                  Model4 model4 = dataSnapshot.getValue(Model4.class);
                  mTriptitle.setText(model4.getTriptitle());

                  mTripdesc.setText(model4.getTripdesc());
                  mTripprice.setText(model4.getTripprice());

                  Picasso.get().load(model4.getTrippic()).into(imageView);
              }

          }

          @Override
          public void onCancelled(@NonNull DatabaseError databaseError) {
              Toast.makeText(Tour_Details_page.this,"connection error occured",Toast.LENGTH_SHORT).show(); 
          }
      });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...