0

내 위치 목록을 firebase에서 정렬하려고합니다. 목록은 가장 가까운 위치에서 현재 위치로 정렬해야합니다. 목록보기를 현재 위치의 가장 가까운 위치로 정렬하려면 어떻게해야합니까? 목록보기를 현재 위치의 가장 가까운 위치로 정렬하려면 어떻게해야합니까?

이 당신이 부동 distanceTo 방법을 사용하고 가장 가까운 거리를 얻을 수있는 결과에 Collection.sort을 사용할 수 있습니다 내 목록보기

public class AirConditioningActivity extends AppCompatActivity { 

private DatabaseReference mDatabaseRef; 
private List<AdminImageUpload> adimgList; 
private ListView lvl; 
private AdminImageListAdapter adapter; 
private ProgressDialog progressDialog; 
private FirebaseAuth firebaseAuth; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_air_conditioning); 
    adimgList = new ArrayList<>(); 
    lvl= (ListView) findViewById(R.id.listViewImage); 
    progressDialog = new ProgressDialog(this); 
    progressDialog.setMessage("Please wait loading list image..."); 
    progressDialog.show(); 
    firebaseAuth = FirebaseAuth.getInstance(); 
    mDatabaseRef = FirebaseDatabase.getInstance().getReference(AdminKeyWorkshopsActivity.FB_DATABASE_PATH); 
    Query mQuery = mDatabaseRef.orderByChild("category").equalTo("AIR-CONDITIONING"); 
    mQuery.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      progressDialog.dismiss(); 
      for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
       AdminImageUpload image = snapshot.getValue(AdminImageUpload.class); 
       adimgList.add(image); 
      } 
      adapter = new AdminImageListAdapter(AirConditioningActivity.this, R.layout.admin_image_item, adimgList); 
      lvl.setAdapter(adapter); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

      progressDialog.dismiss(); 
     } 
    }); 

    lvl.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      AdminImageUpload adimgList = (AdminImageUpload) adapterView.getAdapter().getItem(i); 
      Intent intent = new Intent(AirConditioningActivity.this, AdminDetailsOfWorkshops.class); 

      String name = adimgList.getName(); 
      String address = adimgList.getAddress(); 
      String contact = adimgList.getContact(); 
      String category = adimgList.getCategory(); 
      String url = adimgList.getUrl(); 

      intent.putExtra("name", name); 
      intent.putExtra("address", address); 
      intent.putExtra("contact", contact); 
      intent.putExtra("category", category); 
      intent.putExtra("URL", url); 
      startActivity(intent); 
     } 
    }); 
} 

답변

0

내 어댑터

public class AdminImageListAdapter extends ArrayAdapter <AdminImageUpload> { 
private Activity context; 
private int resource; 
private List<AdminImageUpload> adlistImage; 

public AdminImageListAdapter(@NonNull Activity context, @LayoutRes int resource, @NonNull List<AdminImageUpload> objects) { 
    super(context, resource, objects); 
    this.context = context; 
    this.resource = resource; 
    adlistImage = objects; 
} 

@NonNull 
@Override 
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 
    LayoutInflater inflater = context.getLayoutInflater(); 

    View v = inflater.inflate(resource, null); 
    TextView adName = (TextView) v.findViewById(adImageName); 
    TextView adAddress = (TextView) v.findViewById(adImageAddress); 
    ImageView img = (ImageView) v.findViewById(R.id.adimgView); 

    adName.setText(adlistImage.get(position).getName()); 
    adAddress.setText(adlistImage.get(position).getAddress()); 
    Glide.with(context).load(adlistImage.get(position).getUrl()).into(img); 

    return v; 

} 

입니다.

관련 문제