我正在try 创建一款应用程序,允许用户租用离他们最近的汽车.我想用一个TextView和ImageView来构建一个cardView一旦我找到了最近的汽车,我创建了方法BuildCardView来实现这一点.我的问题是cardView在被调用时没有被创建.当我直接调用BuildCardView时,它工作得很好,但在GeoQuery onKeyEntered方法内部调用时就不行了.我调试了代码,在onKeyEntered的内部调用了方法BuildCardView,但cardView不可见.下面是调用FireBase方法的代码.
FindCar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
findClosestCars();
}
});
下面是调用BuildCardView的FireBase方法
private void findClosestCars() {
if (ActivityCompat.checkSelfPermission(RentersMenuPageActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
// turnOnLocationUpdates();
//fusedLocationClient.requestLocationUpdates(mLocationRequest, locationCallback, Looper.myLooper());
databaseReference = FirebaseDatabase.getInstance().getReference("Users").child("Lenders");
GeoFire geoFire = new GeoFire(databaseReference);
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(latitude, longitude), radius);
geoQuery.removeAllListeners();
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, GeoLocation location) {
//
// Toast.makeText(RentersMenuPageActivity.this, "You Found a Lender",Toast.LENGTH_LONG);
// Toast.LENGTH_LONG).show();
//showPictureAndPrice();
if (!driverFound) {
driverFound = true;
driverFoundID = key;
closestLender = FirebaseDatabase.getInstance().getReference("Users").child("Lenders").child(driverFoundID);
String [] lenderLocations;
buildCardView();
}
radius++;
}
下面是BuildCardView,它在主视图中inflating 一个较小的视图(直接调用时起作用,但不是从onkey enter调用时起作用)
private void buildCardView(){
Toast.makeText(RentersMenuPageActivity.this, "You Found a Lender",Toast.LENGTH_LONG).show();
LayoutInflater mInflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
View view =getLayoutInflater().inflate(R.layout.card,null);
// CardView cardView = view.findViewById(R.id.cardView);
Button rentCarButton = view.findViewById(R.id.rentCarButton);
TextView price= view.findViewById(R.id.price);
TextView makeandmodel = view.findViewById(R.id.makeandmodel);
ImageView imageView =view.findViewById(R.id.imageViewScroll);
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
linearLayout.addView(view);
}