Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase GeoFire使用FirebaseRecylerAdapter_Android_Firebase Realtime Database_Android Recyclerview_Firebaseui_Geofire - Fatal编程技术网

Android Firebase GeoFire使用FirebaseRecylerAdapter

Android Firebase GeoFire使用FirebaseRecylerAdapter,android,firebase-realtime-database,android-recyclerview,firebaseui,geofire,Android,Firebase Realtime Database,Android Recyclerview,Firebaseui,Geofire,如何使用在Firebase上执行地理查询后获得的键值填充FirebaseRecyclerAdapter public class MainActivity extends AppCompatActivity implements { private RecyclerView myLocationAds; private FirebaseRecyclerAdapter<MyAds, MyLocAdsViewHolder> myLocAdsAdapter; private Databa

如何使用在Firebase上执行地理查询后获得的键值填充FirebaseRecyclerAdapter

public class MainActivity extends AppCompatActivity implements {

private RecyclerView myLocationAds;
private FirebaseRecyclerAdapter<MyAds, MyLocAdsViewHolder> myLocAdsAdapter;
private DatabaseReference myLocRefernce;
GoogleApiClient mGoogleApiClient;
private double mLatitudeText;
private double mLongitudeText;
LocationRequest mLocationRequest;
private Location location;
private GeoFire geoFire;
private GeoQuery geoQuery;
GeoLocation center;
初始化我的回收视图

private void intializeScreen() {
    myLocationAds = (RecyclerView) findViewById(R.id.myLocationAds);
    myLocationAds.setHasFixedSize(true);
    myLocationAds.setLayoutManager(new LinearLayoutManager(MainActivity.this));
    myLocRefernce = FirebaseDatabase.getInstance().getReference(Constants.Adverts);
    myLocRefernce.keepSynced(true);
    setUpAdapter();
    myLocationAds.setAdapter(myLocAdsAdapter);


}
这是我的FirebaseRecyclerAdapter

private void setUpAdapter() {
    myLocAdsAdapter = new FirebaseRecyclerAdapter<MyAds, MyLocAdsViewHolder>(
            MyAds.class,
            R.layout.adverts_row,
            MyLocAdsViewHolder.class,
            myLocRefernce

    ) {
        @Override
        protected void populateViewHolder(MyLocAdsViewHolder myLocAdsViewHolder, MyAds myAds, int position) {
            final String post_key = getRef(position).getKey();

            myLocAdsViewHolder.setAdImageV(getApplicationContext(),myAds.getImageUrl());
            myLocAdsViewHolder.setAdheadln(myAds.getAdheader());
            myLocAdsViewHolder.setAdDescp(myAds.getAdDesciption());
            myLocAdsViewHolder.setViewN(myAds.getViews());
            myLocAdsViewHolder.setComment(myAds.getNumComments());
            myLocAdsViewHolder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Intent adDisplay = new Intent(MainActivity.this,AdvertDisplay.class);
                    adDisplay.putExtra("Ad_data", post_key);
                    startActivity(adDisplay);
如何仅使用我位置范围内的那些键填充
FirebaseRecyclerAdapter

private void setUpAdapter() {
    myLocAdsAdapter = new FirebaseRecyclerAdapter<MyAds, MyLocAdsViewHolder>(
            MyAds.class,
            R.layout.adverts_row,
            MyLocAdsViewHolder.class,
            myLocRefernce

    ) {
        @Override
        protected void populateViewHolder(MyLocAdsViewHolder myLocAdsViewHolder, MyAds myAds, int position) {
            final String post_key = getRef(position).getKey();

            myLocAdsViewHolder.setAdImageV(getApplicationContext(),myAds.getImageUrl());
            myLocAdsViewHolder.setAdheadln(myAds.getAdheader());
            myLocAdsViewHolder.setAdDescp(myAds.getAdDesciption());
            myLocAdsViewHolder.setViewN(myAds.getViews());
            myLocAdsViewHolder.setComment(myAds.getNumComments());
            myLocAdsViewHolder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Intent adDisplay = new Intent(MainActivity.this,AdvertDisplay.class);
                    adDisplay.putExtra("Ad_data", post_key);
                    startActivity(adDisplay);
private void startGeoQuery() {
    double radius = 0.5;
    geoQuery = geoFire.queryAtLocation(center, radius);
    geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
        @Override
        public void onKeyEntered(String s, GeoLocation geoLocation) {
            Log.d(TAG, "Key " + s + " entered the search area at [" + geoLocation.latitude + "," + geoLocation.longitude + "]");
            //Toast.makeText(MainActivity.this,geoLocation.latitude+" "+geoLocation.longitude+" ",Toast.LENGTH_LONG).show();
            DatabaseReference mDatabasePost = FirebaseDatabase.getInstance().getReference().child(Constants.Adverts);
            mDatabasePost.keepSynced(true);
            mDatabasePost.child(s).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    // I  add the deal only if it doesn't exist already in the adapter
                    String key = dataSnapshot.getKey();
                    Toast.makeText(MainActivity.this, key,Toast.LENGTH_LONG).show();  }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

        }

        @Override
        public void onKeyExited(String s) {

        }

        @Override
        public void onKeyMoved(String s, GeoLocation geoLocation) {

        }

        @Override
        public void onGeoQueryReady() {

        }

        @Override
        public void onGeoQueryError(DatabaseError databaseError) {

        }
    });}}