繁体   English   中英

我无法将数据从 Recyclerview 传递到另一个活动

[英]I can not pass data from Recyclerview to another activity

程序崩溃了。 我收到这条消息:

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 )

我想将信息传递给另一个活动

#Reservation class

公共 class 保留扩展 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());

适配器 class

公共 class FirestoreAdapter 扩展 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);

}

}

预订 class

public class booking_activity 扩展 AppCompatActivity 实现 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());



   

setText()中的onBindViewHolder()中添加listcars.get(position).getPriceWithLable()将其应用于TextViews ex 的 rest。 holder.textpri_ce.setText(listcars.get(position).getPriceWithLable());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM