【问题标题】:How to update the query reference of a firebase recycler adapter?如何更新 Firebase 回收器适配器的查询参考?
【发布时间】:2017-02-09 03:28:51
【问题描述】:

我有一个RecyclerView 绑定到一个FirebaseRecyclerAdapter。我需要根据用户使用spinner 设置的值更新显示的数据。

类似这样的:

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){
     ???????
}
} 

【问题讨论】:

    标签: android firebase firebase-realtime-database firebaseui


    【解决方案1】:

    找不到正确的答案,但作为临时解决方法,只需创建一个新适配器并将其设置为 RecyclerView 即可。仍然觉得应该有更优雅的方式来做到这一点。

    【讨论】:

    • 你会是最伟大的,并分享你如何调整自己的方式吗?
    【解决方案2】:

    使用 FirebaseRecyclerViewAdapter 实现解决方案。或者将相同的代码更改合并到您的应用程序库中。

    https://firebaseui.com/docs/android/index.html?com/firebase/ui/FirebaseRecyclerViewAdapter.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多