RecyclerView
은 FirebaseRecyclerAdapter
에 바인딩되어 있습니다. spinner
을 사용하여 사용자가 설정 한 값을 기반으로 표시된 데이터를 업데이트해야합니다. 이 같은firebase 리사이클 어댑터의 쿼리 참조를 업데이트하는 방법은 무엇입니까?
뭔가 :
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference ref = db.getReference("data");
Query query = ref.orderByChild("index").startAt(loadPreferences()).endAt(loadPreferences());
final Adapter fireAdapter = new Adapter(Model.class, R.layout.model_card, Adapter.FireViewHolder.class, query);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String selectedIndex = String.valueOf(adapterView.getItemAtPosition(i));
savePreferences(selectedIndex);
Query newQuery = ref.orderByChild("index").startAt(selectedIndex).endAt(selectedIndex));
fireAdapter.updateQuery(newQuery); //This is what i'm looking for
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
내 어댑터 :
class Adapter extends FirebaseRecyclerAdapter<Model, Adapter.FireViewHolder> {
Adapter(Class<Model> modelClass, int modelLayout, Class<FireViewHolder> viewHolderClass, Query ref) {
super(modelClass, modelLayout, viewHolderClass, ref);
}
@Override
protected void populateViewHolder(FireViewHolder viewHolder, Model model, int position) {
viewHolder.text.setText(model.getText());
}
static class FireViewHolder extends RecyclerView.ViewHolder {
TextView text;
public FireViewHolder(View itemView) {
super(itemView);
text = (TextView) itemView.findViewById(R.id.textView);
}
}
public void updateQuery(Query newQuery){
???????
}
}
당신이 당신의 길을 어떻게 조정했는지 공유하고 싶으십니까? – Alexander