Как я могу получить ключи из Firebase и сопоставить их с экземпляром модели - PullRequest
0 голосов
/ 18 мая 2018

Как я могу получить ключи для записей в моей базе данных и сопоставить их с моими java-объектами, чтобы я мог обновлять содержимое каждого отдельного объекта в базе данных?Я хочу получить «КЛЮЧ ТОДО», как показано в JSON ниже.

База данных

{
  "todos" : {
    "7Y3s5KPhyLU8mR7cbUGNbcnNQ7f1 (USER KEY)" : {
      "-LCddfFC048CowqkTfV1 (TODO KEY)" : {
        "description" : "vhh",
        "title" : "hh"
      },
      "-LCdiAkltHn3Zs47Fdyg" : {
        "description" : "hg5hh",
        "title" : "bcgyi"
      }
    }
  }
}

Код Android

mUserId = FirebaseAuth.getInstance().getCurrentUser().getUid();
mQuery = FirebaseDatabase.getInstance().getReference().child("todos/" + mUserId);

//Initialize RecyclerView
mRecyclerView = findViewById(R.id.recyclerView);

//Set layout manager for RecyclerView
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

//Initialize options for adapter
FirebaseRecyclerOptions<Todo> options =
        new FirebaseRecyclerOptions.Builder<Todo>()
                .setQuery(mQuery, Todo.class)
                .build();


//Initialize adapter
mAdapter = new FirebaseRecyclerAdapter<Todo, TodoHolder>(options) {
    @Override
    public TodoHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // Create a new instance of the ViewHolder, in this case we are using a custom
        // layout called R.layout.message for each item
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.list_item, parent, false);

        return new TodoHolder(view);
    }

    @Override
    protected void onBindViewHolder(TodoHolder holder, int position, Todo todo) {
        // Bind the Chat object to the ChatHolder
        holder.bind(todo);
    }
};


//Connect adapter to recyclerview
mRecyclerView.setAdapter(mAdapter);

1 Ответ

0 голосов
/ 18 мая 2018

Чтобы получить ключ в вашем onBindViewHolder, вы ищите его из адаптера на основе position:

DatabaseReference ref = mAdapter.getReference(position);
String key = ref.getKey();
...