Фильтровать / сортировать элементы FirebaseRecyclerAdapter с помощью Spinner в автономном режиме - PullRequest
0 голосов
/ 02 сентября 2018

Я извлекаю некоторые элементы из firebase realtime database в firebaseRecyclerView. Я делаю данные в автономном режиме в моем модуле application с этим кодом.

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

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

  private RecyclerView mRecyclerView;
    private DatabaseReference mDatabase;
    private ProgressBar mProgressBar;
    private Spinner spinner;
    private Query query;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //populating spinner
        spinner = findViewById(R.id.spinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.AllEpisodes, R.layout.custom_spinner);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);

        mProgressBar = findViewById(R.id.progressBarMain);
        //setting database and recycler view
        mDatabase = FirebaseDatabase.getInstance().getReference().child("Global");
        mDatabase.keepSynced(true);
        mRecyclerView = findViewById(R.id.main_recyclerview);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
}

    @Override
    protected void onStart() {
        super.onStart();
        query = mDatabase;
        final FirebaseRecyclerAdapter<Sermon, SermonViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Sermon, SermonViewHolder>(Sermon.class, R.layout.item_view, SermonViewHolder.class,query) {
            @Override
            protected void populateViewHolder(SermonViewHolder viewHolder, final Sermon model, int position) {
                mProgressBar.setVisibility(View.INVISIBLE);
            }
        };
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                switch (position){
                    case 0:
                        query=mDatabase.limitToLast(1);
                        firebaseRecyclerAdapter.notifyDataSetChanged();
                        mRecyclerView.setAdapter(firebaseRecyclerAdapter);
                        break;
                    case 1:
                        query=mDatabase.limitToLast(2);
                        firebaseRecyclerAdapter.notifyDataSetChanged();
                        mRecyclerView.setAdapter(firebaseRecyclerAdapter);
                        break;
                    case 2:
                        query=mDatabase.limitToLast(3);
                        firebaseRecyclerAdapter.notifyDataSetChanged();
                        mRecyclerView.setAdapter(firebaseRecyclerAdapter);
                        break;
                    case 3:
                        query=mDatabase.limitToLast(4);
                        firebaseRecyclerAdapter.notifyDataSetChanged();
                        mRecyclerView.setAdapter(firebaseRecyclerAdapter);
                        break;
                    case 4:
                        query=mDatabase.limitToLast(5);
                        firebaseRecyclerAdapter.notifyDataSetChanged();
                        mRecyclerView.setAdapter(firebaseRecyclerAdapter);
                        break;
                    case 5:
                        query=mDatabase.limitToLast(6);
                        firebaseRecyclerAdapter.notifyDataSetChanged();
                        mRecyclerView.setAdapter(firebaseRecyclerAdapter);
                        break;
                    case 6:
                        query=mDatabase.limitToLast(7);
                        firebaseRecyclerAdapter.notifyDataSetChanged();
                        mRecyclerView.setAdapter(firebaseRecyclerAdapter);
                        break;
                    case 7:
                        query=mDatabase.limitToLast(8);
                        firebaseRecyclerAdapter.notifyDataSetChanged();
                        mRecyclerView.setAdapter(firebaseRecyclerAdapter);
                        break;
                    case 8:
                        query=mDatabase.limitToLast(9);
                        firebaseRecyclerAdapter.notifyDataSetChanged();
                        mRecyclerView.setAdapter(firebaseRecyclerAdapter);
                        break;
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...