Используйте locationlistener в RecyclerView.OnScrollListener - PullRequest
0 голосов
/ 08 октября 2018

Мне нужно получить местоположение пользователя и отправить запрос по этому адресу на сервер.У меня есть просмотрщик для отображения данных сервера.Чтобы обновить местоположение, я использую этот код в onStart в основной активности и хочу получить местоположение в состоянии ожидания в окне реселлера.Теперь я не знаю, как я могу реализовать слушатель местоположения.

Maint Activity:

if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
        ActivityCompat.requestPermissions(MainActivity.this,  new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
    }else{
        locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER, 10000, 0, locationListener);

    }

и:

public abstract class StoryPaginationScrollListener extends RecyclerView.OnScrollListener{

LinearLayoutManager layoutManager;
LocationListener locationListener;
Context context;


public StoryPaginationScrollListener(LinearLayoutManager layoutManager, LocationListener locationListener, Context context) {
    this.layoutManager = layoutManager;
    this.locationListener = locationListener;
    this.context = context;
}


@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
    super.onScrollStateChanged(recyclerView, newState);

    if(newState == SCROLL_STATE_IDLE){

    }
}

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    super.onScrolled(recyclerView, dx, dy);

    int visibleItemCount = layoutManager.getChildCount();
    int totalItemCount = layoutManager.getItemCount();
    int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();





    if (!isLoading() && !isLastPage()) {
        }
        if ((visibleItemCount + firstVisibleItemPosition) >= totalItemCount && firstVisibleItemPosition >= 0) {
            loadMoreItems();
        }
    }
}



protected abstract void loadMoreItems();

public abstract int getTotalPageCount();

public abstract boolean isLastPage();

public abstract boolean isLoading();


}

Нуждается местоположение в этом состоянии: if(newState == SCROLL_STATE_IDLE) и использовать это местоположение в loadMoreItems ().

1 Ответ

0 голосов
/ 08 октября 2018

попробуй реализовать LocationListener вот так

class MyActivity extends Activity implements LocationsListener{
    public Location location

    @Override
    public void onLocationChanged(Location location) {
        this.location = location
    }

    public void someLogic(){
        new RecyclerView.OnScrollListener(){
        @Override
        public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            if(newState == SCROLL_STATE_IDLE){
                if(location != null){
                    //write your code here
                }
            }

        }

        @Override
        public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
        }
    };
    }
...