program crashed. and I get this message:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.mob3000.group11.Cars.getImgurl()' on a null object reference at com.mob3000.group11.Reservation.onCreate(Reservation.java:57)
I want to pass info to another activity
#Reservation class
public class Reservation extends AppCompatActivity {
ImageView imgMakeRes;
TextView pricMakeRes;
TextView brandMakeRes;
TextView girMakeRes;
TextView seatMakeRes;
public static final String BOOKING_INFORMATION= "booking_information";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reservation);
imgMakeRes = (ImageView) findViewById(R.id.imgMakeReservation);
pricMakeRes = (TextView) findViewById(R.id.pricMakereservation);
brandMakeRes = (TextView) findViewById(R.id.brandMakeReservation);
girMakeRes = (TextView) findViewById(R.id.girMakeReservation);
seatMakeRes = (TextView) findViewById(R.id.seatMakeReservation);
Cars cars = getIntent().getParcelableExtra(BOOKING_INFORMATION);
Glide.with(this).load(cars.getImgurl()).into(imgMakeRes);
pricMakeRes.setText((int) cars.getPrice());
brandMakeRes.setText(cars.getBrand());
girMakeRes.setText(cars.getGir());
seatMakeRes.setText(cars.getSeats());
Adapter class
public class FirestoreAdapter extends FirestoreRecyclerAdapter<Cars,FirestoreAdapter.myViewHolder> {
private OnListItemClick onListItemClick;
private Context context;
private ArrayList<Cars> listCars;
public FirestoreAdapter(@NonNull FirestoreRecyclerOptions<Cars> options,OnListItemClick onListItemClick) {
super(options);
this.onListItemClick=onListItemClick;
}
@Override
protected void onBindViewHolder(@NonNull myViewHolder holder, int position, @NonNull Cars cars) {
holder.textpri_ce.setText(cars.getPriceWithLabel());
holder.textbra_nd.setText(cars.getBrand());
holder.textg_ir.setText(cars.getGir());
holder.textsea_ts.setText(cars.getSeatsWithLabel());
Glide.with(holder.img.getContext()).load(cars.getImgurl()).into(holder.img);
}
@NonNull
@Override
public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.car_items,
parent, false);
return new myViewHolder(view);
}
public class myViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
CircleImageView img;
TextView textpri_ce,textbra_nd,textg_ir,textsea_ts;
public myViewHolder( View itemView) {
super(itemView);
img = (CircleImageView) itemView.findViewById(R.id.img1);
textpri_ce= (TextView) itemView.findViewById(R.id.textprice);
textbra_nd= (TextView)itemView.findViewById(R.id.textbrand);
textg_ir= (TextView)itemView.findViewById(R.id.textgir);
textsea_ts= (TextView)itemView.findViewById(R.id.textseats);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
onListItemClick.onItemClick(getItem(getAdapterPosition()),getAdapterPosition());
}
}
public interface OnListItemClick{
void onItemClick(Cars snapshot, int position);
}
}
public class booking_activity extends AppCompatActivity implements FirestoreAdapter.OnListItemClick{ FirebaseFirestore firebaseFirestore; RecyclerView mFirestoreList;
private ArrayList<Cars> listCars;
Context context;
FirestoreAdapter adapter;
private static final String TAG = "booking_activity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_booking);
// calling function adapetWithRecycle() which contains adapter and recycleview----
adapetWithRecycle();
//--------------------------------------------------------------------------
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.toolbar_title);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// here we call functions for all the spinners to Find Id and set adapters.
priceSpinner();
brandSpinner();
girSpinner();
seatsSpinner();
}
// onStop and onStart for recycle view
@Override public void onStart() {
super.onStart();
adapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
adapter.stopListening();
}
protected void adapetWithRecycle() {
firebaseFirestore = FirebaseFirestore.getInstance();
mFirestoreList = findViewById(R.id.recview);
Query query = firebaseFirestore.collection("cars");
FirestoreRecyclerOptions<Cars> options = new FirestoreRecyclerOptions.Builder<Cars>()
.setQuery(query, Cars.class)
.build();
adapter = new FirestoreAdapter(options,this);
mFirestoreList.setHasFixedSize(true);
mFirestoreList.setLayoutManager(new LinearLayoutManager(this));
mFirestoreList.setAdapter(adapter);
}
@Override
public void onItemClick(Cars snapshot, int position) {
Intent intent = new Intent(booking_activity.this, Reservation.class);
// intent.putExtra(Reservation.BOOKING_INFORMATION, listCars.get(position));
//intent.putExtra(Reservation.BOOKING_INFORMATION, listCars);
startActivity(intent);
Log.d("ITEM_CLICK","clicked the item: " + position+ " Gear is : " + snapshot.getGir()+
" Price is: "+ snapshot.getPrice()+" , Brand is "+ snapshot.getBrand()+" ,Seats: "+
snapshot.getSeats());
inside your onBindViewHolder()
in setText()
add listcars.get(position).getPriceWithLable()
apply it to the rest of your TextViews
ex. holder.textpri_ce.setText(listcars.get(position).getPriceWithLable());
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.