2016-09-30 1 views
4

RecyclerViewFirebaseRecyclerAdapter에 바인딩되어 있습니다. 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){ 
    ??????? 
} 
} 

답변

0

는 적절한 대답을 찾을 임시 해결 방법으로 단지 새 어댑터를 생성하고 RecyclerView 작품으로 설정 할 수 없습니다. 아직도 더 우아한 방법이 있어야한다고 생각합니다.

+0

당신이 당신의 길을 어떻게 조정했는지 공유하고 싶으십니까? – Alexander

관련 문제