У меня есть 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();
}
});
}
}