我正在使用此应用,该应用具有链表的数据结构。我的问题是,当我从listView中选择项目并将其放置到另一个活动中的另一个listView中时。我把该商品放置在所有单独的用户中,而实际上应该只为选择该商品的一个用户放置该商品。
代码正在运行,但不是我期望的那样,也许我需要使用那些onSave和onRestore方法,因为我认为通过传递一个活动中的变量,我会以某种方式破坏应用程序并丢失所有参数。
/
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.buttonPickCar:
finish();
startActivity(new Intent(this, CarAddActivity.class));
break;
}
}
/
buttonAttachCar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Vehicle vehicle = carsList.get(position);
Intent intent = new Intent(getApplicationContext(), VehicleAddActivity.class);
intent.putExtra(CAR_BRAND, vehicle.getVehicleBrand());
intent.putExtra(CAR_MODEL, vehicle.getVehicleModel());
intent.putExtra(CAR_NUMBER, vehicle.getVehicleNumber());
intent.putExtra(CAR_USER, vehicle.getVehicleUser());
intent.putExtra(CAR_ID, vehicle.getVehicleId());
alertDialog.dismiss();
finish();
startActivity(intent);
}
});
我将所有参数都放在OnCreate方法中要做的Firebase数据库中
//关系数据(从汽车表中获取数据)
String carId = intent.getStringExtra(CarAddActivity.CAR_ID);
String carBrand = intent.getStringExtra(CarAddActivity.CAR_BRAND);
String carModel = intent.getStringExtra(CarAddActivity.CAR_MODEL);
String carNumber = intent.getStringExtra(CarAddActivity.CAR_NUMBER);
String carUser = intent.getStringExtra(CarAddActivity.CAR_USER);
mAuth = FirebaseAuth.getInstance();
String currentUserId = mAuth.getCurrentUser().getUid();
databaseVehicles = FirebaseDatabase.getInstance().getReference("vehicles").child(currentUserId);
if(carId != null){
Vehicle vehicle = new Vehicle(carId, carBrand, carModel, carNumber, carUser);
databaseVehicles.child(carId).setValue(vehicle);
}
最后,我从firebase数据库的onStart方法显示数据
@Override 受保护的void onStart(){ super.onStart();
databaseCars.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
carsList.clear();
if(dataSnapshot.exists()){
for (DataSnapshot carSnapshot: dataSnapshot.getChildren()){
Vehicle vehicle = carSnapshot.getValue(Vehicle.class);
carsList.add(vehicle);
}
CarList adapter = new CarList(CarAddActivity.this, carsList);
listViewAllCars.setAdapter(adapter);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
因此在Firebase数据库中,我有一个表“ cars”用于存储所有汽车,并在附加了另一个表后创建了“车辆”,其中存储了所有由用户选择的汽车。由于某种原因,即使只有一个用户选择了它,它也会为所有用户显示同一辆汽车。