无法正确地将项目从一个ListView传递到另一个ListView

时间:2019-04-29 21:19:51

标签: android firebase-realtime-database android-listview

我正在使用此应用,该应用具有链表的数据结构。我的问题是,当我从listView中选择项目并将其放置到另一个活动中的另一个listView中时。我把该商品放置在所有单独的用户中,而实际上应该只为选择该商品的一个用户放置该商品。

代码正在运行,但不是我期望的那样,也许我需要使用那些onSave和onRestore方法,因为我认为通过传递一个活动中的变量,我会以某种方式破坏应用程序并丢失所有参数。

  1. 按下此按钮可以打开另一个“活动”,以便我可以从列表中选择汽车

/

@Override
public void onClick(View view) {
    switch (view.getId()){
        case R.id.buttonPickCar:
            finish();
            startActivity(new Intent(this, CarAddActivity.class));
            break;
    }

}
  1. 我从列表中按任意一辆汽车,弹出对话框,然后按AttachCar按钮

/

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);




            }
        });
  1. 我将所有参数都放在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);
    
    }
    
  2. 最后,我从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”用于存储所有汽车,并在附加了另一个表后创建了“车辆”,其中存储了所有由用户选择的汽车。由于某种原因,即使只有一个用户选择了它,它也会为所有用户显示同一辆汽车。

0 个答案:

没有答案