Я столкнулся со следующей проблемой. Когда я попытался получить значение из FirebaseRecyclerAdapter, я получаю null, только ключ, который я могу видеть. Пожалуйста, ознакомьтесь с мой код:FirebaseRecyclerAdapter получает нулевое значение
public abstract class TabFragmentLists extends Fragment {
private DatabaseReference mDatabase;
private FirebaseRecyclerAdapter<Post, PostViewHolder> mAdapter;
private RecyclerView mRecycler;
private LinearLayoutManager mManager;
public TabFragmentLists() {
// Required empty public constructor
}
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View rootView = inflater.inflate(R.layout.fragment_tab_lists, container, false);
mDatabase = FirebaseDatabase.getInstance().getReference();
mRecycler = (RecyclerView) rootView.findViewById(R.id.messages_list);
mRecycler.setHasFixedSize(true);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// Set up Layout Manager, reverse layout
mManager = new LinearLayoutManager(getActivity());
mManager.setReverseLayout(true);
//mManager.setStackFromEnd(true);
mRecycler.setLayoutManager(mManager);
// Set up FirebaseRecyclerAdapter with the Query
Query postsQuery = getQuery(mDatabase);
mAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>(Post.class, R.layout.item_post,
PostViewHolder.class, postsQuery) {
@Override
protected void populateViewHolder(final PostViewHolder viewHolder, final Post model, final int position) {
final DatabaseReference postRef = getRef(position);
// Set click listener for the whole post view
final String postKey = postRef.getKey();
viewHolder.bindToPost(model, new View.OnClickListener() {
@Override
public void onClick(View postView) {
Log.e("OnClick","== Bind===");
}
});
}
};
mRecycler.setAdapter(mAdapter);
}
@Override
public void onDestroy() {
super.onDestroy();
if (mAdapter != null) {
mAdapter.cleanup();
}
}
public String getUid() {
return FirebaseAuth.getInstance().getCurrentUser().getUid();
}
public abstract Query getQuery(DatabaseReference databaseReference);
}
PostViewHolder
public class PostViewHolder extends RecyclerView.ViewHolder {
public TextView messsageView;
public PostViewHolder(View itemView) {
super(itemView);
messsageView = (TextView) itemView.findViewById(R.id.post_message);
}
public void bindToPost(Post post, View.OnClickListener starClickListener) {
//null and crash
Log.e("Post", String.valueOf(post.getMessage()));
messsageView.setText(post.getMessage());
}
}
Сообщение класса
@IgnoreExtraProperties
public class Post {
public String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Post() {
// Default constructor required for calls to DataSnapshot.getValue(Post.class)
}
public Post(String message) {
this.message = message;
}
@Exclude
public Map<String, Object> toMap() {
HashMap<String, Object> result = new HashMap<>();
result.put(PostKeys.kMessage.toString(), message);
return result;
}
}
Оценил любой намек. Благодаря
EDIT
public class TabFragmentPosts extends TabFragmentLists {
public TabFragmentPosts() {
// Required empty public constructor
}
@Override
public Query getQuery(DatabaseReference databaseReference) {
// All my posts
return databaseReference.child("post");
}
}
Это именно то, что я в конце концов у
E/LIST dataSnapshot: DataSnapshot { key = -KOgO2hC9Fh_vhe1kh1z, value = null }
Ok проверит благодаря – Svitlana
да, у меня уже есть эти разрешения { "правила": { ".read ": "AUTH = нуль", " .WRITE": "! AUTH = нуль" } } – Svitlana