【问题标题】:Show branch key/name RecyclerView + Firebase显示分支键/名称 RecyclerView + Firebase
【发布时间】:2017-05-09 10:39:35
【问题描述】:

我一直在尝试在 Android 上使用 RecyclerView 显示我的所有分支 (Firebase)。 这是我的 JSON:

"notice" : {
    "notice1" : {
      "subnotice1" : "test1",
      "subnotice2" : "test2",
      "subnotice3" : {
        "test" : "test"
      }
    },
    "notice2" : {
      "subnotice1" : "test3",
      "subnotice2" : "test4"
    },
    "notice3" : {
      "subnotice1" : "test5",
      "subnotice2" : "test6"
    }
  }
}

我想用 RecyclerView notice1、notice2、notice3 显示,但似乎无法实现。

我能做什么?

提前致谢

编辑:

private List<String> lista = new ArrayList<>();
private FirebaseRecyclerAdapter adaptador;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    RecyclerView rv = (RecyclerView) findViewById(recyclerView);
    rv.setHasFixedSize(false);
    rv.setLayoutManager(new LinearLayoutManager(this));
    DatabaseReference dbr = FirebaseDatabase.getInstance().getReference().child("compuestos");
    dbr.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            lista.removeAll(lista);
            for (DataSnapshot a : dataSnapshot.getChildren()) {
                Log.d("DIEGO", a.getKey());
                lista.add(a.getKey());
            }
           for(String s: lista){
                Log.d("KOKO", s);
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.e("DIEGO", "ERROR", databaseError.toException());
        }
    });

    adaptador = new FirebaseRecyclerAdapter<Datos, Holder>(Datos.class, R.layout.lista_elementos, Holder.class, dbr) {
        @Override
        protected void populateViewHolder(Holder h, Datos d, int position) {               for(String s : lista){
                d.setCampo(s);
                h.setCampo(d.getCampo());
            }

        }
    };
    rv.setAdapter(adaptador);
}

【问题讨论】:

  • 为什么不可能?说出原因
  • 你有没有尝试过?
  • 我不知道如何用 RecyclerView 实现它,似乎 RecyclerView 只能显示包含 final 变量的“最终分支”为“subnotice1”:“testX”,但不显示来自分支机构
  • 我有Adapter、ViewHolder等……但正如我所说,只显示finals Strings
  • 显示你的代码你尝试了什么

标签: android firebase firebase-realtime-database android-recyclerview firebaseui


【解决方案1】:

解决方案: 我意识到我必须将键保留在 ArrayList 上,然后只需要显示它:

private ArrayList<String> keys = new ArrayList<String>();
//...

 ChildEventListener childEventListener = new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            keys.add(dataSnapshot.getKey());
        }

在适配器中:

mAdapter =
            new FirebaseRecyclerAdapter<Trabajo, TrabajoHolder>(Trabajo.class,R.layout.lista_trabajos ,TrabajoHolder.class, dbAvisos) {
                @Override
                protected void populateViewHolder(TrabajoHolder viewHolder, Trabajo model, int position) {
                        viewHolder.setKey(keys.get(position));
                }
            };

通过这种方式,“populateViewHolder”将通过 RecyclerView 显示我们在 Array 中的所有键。

希望对你有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 2021-06-02
    • 2016-12-02
    • 2012-12-06
    • 2017-08-12
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多