而不是一个列表我建议你使用RecyclerView,Android创建了RecyclerView作为ListView的改进,所以可以,您可以使用ListView控件创建附加列表,但使用RecyclerView更容易,更好。您可以在这个帖子阅读更多:RecyclerView vs ListView
此外,您还可以使用FirebaseRecyclerAdapter
这会为你做所有填充列表和检索你所有你想要的数据的工作刚刚恢复适配器列表(我通常我的代码中的用户自定义对象等于我的Firebase数据库的值,这样,您可以在FirebaseRecyclerAdapter中使用它们来改进数据检索)
例如,在此我使用配置文件图像填充用户的列表视图使用FirebaseRecyclerAdapter:
private void initializeRecyclerAdapter() {
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setReverseLayout(true);
linearLayoutManager.setStackFromEnd(true);
mRecyclerUsersView.setLayoutManager(linearLayoutManager);
Query allPostsQuery = FirebaseUtil.getUsersRef();
mAdapter = getFirebaseRecyclerAdapter(allPostsQuery);
mAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override
public void onItemRangeInserted(int positionStart, int itemCount) {
super.onItemRangeInserted(positionStart, itemCount);
// TODO: Refresh feed view.
}
});
mRecyclerUsersView.setAdapter(mAdapter);
}
private FirebaseRecyclerAdapter<User, UserListViewHolder> getFirebaseRecyclerAdapter(Query query) {
return new FirebaseRecyclerAdapter<User, UserListViewHolder>(
User.class, R.layout.user_row_item, UserListViewHolder.class, query) {
@Override
protected void populateViewHolder(UserListViewHolder viewHolder, User user, int position) {
setupUser(viewHolder, user, position, null);
}
};
}
private void setupUser(final UserListViewHolder UserViewHolder, final User user, final int position, final String inPostKey) {
//Set the items for every new view
UserViewHolder.setIcon(user.getPhoto_url());
UserViewHolder.setText(user.getEmail());
final String postKey;
if (mAdapter instanceof FirebaseRecyclerAdapter) {
postKey = ((FirebaseRecyclerAdapter) mAdapter).getRef(position).getKey();
} else {
postKey = inPostKey;
}
FirebaseUtil.getUsersRef().child(postKey).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(final DataSnapshot dataSnapshot) {
//Add users to the newGroup item
UserViewHolder.setPostClickListener(new UserListViewHolder.UserClickListener() {
@Override
public void onUserClick() {
// mNewGroup.addUserToGroup(dataSnapshot.getKey());
mNewGroupUsers.addUserToGroup(dataSnapshot.getKey());
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
//TODO ControlOnCancelled
}
});
}
而且,你可以看到,我的用户对象是如此简单(对象变量的名称必须等于你的火力点的物品,能级可以使用包含HashMap的对象中):
public class User {
private String display_name;
private String email;
private String photo_url;
//[...] get/set methods and constructors
最后,这里是我的viewHolder用户类:
public class UserListViewHolder extends RecyclerView.ViewHolder {
private final View mView;
private static final int POST_TEXT_MAX_LINES = 6;
private ImageView mIconView;
private TextView mAuthorView;
private UserClickListener mListener;
public UserListViewHolder(View itemView) {
super(itemView);
mView = itemView;
mIconView = (ImageView) mView.findViewById(R.id.user_image_profile);
mAuthorView = (TextView) mView.findViewById(R.id.user_text_profile);
mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.onUserClick();
}
});
}
public void setIcon(String url) {
GlideUtil.loadProfileIcon(url, mIconView);
}
public void setPostClickListener(UserClickListener listener) {
mListener = listener;
}
public void setText(final String text) {
if (text == null || text.isEmpty()) {
mAuthorView.setVisibility(View.GONE);
return;
} else {
mAuthorView.setVisibility(View.VISIBLE);
mAuthorView.setText(text);
mAuthorView.setMaxLines(POST_TEXT_MAX_LINES);
}
}
public interface UserClickListener {
void onUserClick();
}
}
随意问任何疑问!希望它能帮助你!
你已经在你的问题中包含了JSON树的图片。请用实际的JSON替换为文本,您可以通过点击Firebase数据库控制台中的导出按钮轻松获取。将JSON作为文本可以搜索,使我们能够轻松使用它来测试您的实际数据,并将其用于我们的答案中,并且通常只是一件好事。 –