我试图从Firebase中检索用户的追随者,并将他们填充到一个RecycraView
中,以便任何人都能看到,就像twitter和Instagram一样,当我运行该应用程序时,它会返回一个错误。
我的代码:
公共类ViewFollowersFragment扩展了片段{private static final String TAG=“ViewFollowersFragment”;
private CircleImageView myprofileimage;
private TextView username;
private ImageView arrow;
private ListView vfollowerslistview;
private DatabaseReference viewFollowersref,viewUserRef;
private FirebaseAuth mAuth;
private FirebaseListAdapter viewfollowersadapter;
private List<User> mUserList;
private User mUser;
String userid;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_view_followers, container, false);
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
vfollowerslistview = (ListView) view.findViewById(R.id.viewfollowerslistview);
arrow = (ImageView) view.findViewById(R.id.fragfollowersbackarrow);
arrow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getActivity().getSupportFragmentManager().popBackStack();
getActivity().finish();
}
});
mUserList = new ArrayList<>();
mAuth = FirebaseAuth.getInstance();
userid = mAuth.getUid();
viewFollowersref = FirebaseDatabase.getInstance().getReference().child("User_Account_Settings");
viewUserRef = FirebaseDatabase.getInstance().getReference();
setFollowers();
return view;
}
private void setFollowers () {
Query query = FirebaseDatabase.getInstance().getReference()
.child("Followers")
.child(mUser.getUser_id());
FirebaseListOptions<UserAccountSettings> options = new FirebaseListOptions.Builder<UserAccountSettings>()
.setLayout(R.layout.layout_user_listitem)
.setLifecycleOwner(getActivity())
.setQuery(query,UserAccountSettings.class)
.build();
viewfollowersadapter = new FirebaseListAdapter(options) {
@Override
protected void populateView(View v, Object model, final int position) {
String newfol = getRef(position).getKey();
final TextView username = v.findViewById(R.id.username);
final CircleImageView profile_image = v.findViewById(R.id.profile_image);
viewFollowersref.child(newfol).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
if (dataSnapshot.hasChild("username")) {
String myusername = dataSnapshot.child("username").getValue().toString();
username.setText(myusername);
}
if (dataSnapshot.hasChild("profileimage")) {
String myimage = dataSnapshot.child("profileimage").getValue().toString();
if (myimage.isEmpty()) {
profile_image.setImageResource(R.drawable.pro_pic);
} else {
Picasso.with(getActivity()).load(myimage).placeholder(R.drawable.pro_pic).into(profile_image);
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
username.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent profileIntent = new Intent(getActivity(), ProfileActivity.class);
profileIntent.putExtra("calling_activity", "Search_Activity");
profileIntent.putExtra("intent_user", mUserList.get(position));
startActivity(profileIntent);
}
});
profile_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent profileIntent = new Intent(getActivity(), ProfileActivity.class);
profileIntent.putExtra("calling_activity", "Search_Activity");
profileIntent.putExtra("intent_user", mUserList.get(position));
startActivity(profileIntent);
}
});
Query userQuery = viewUserRef
.child("Users")
.orderByChild("user_id");
userQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()) {
Log.d(TAG, "onDataChange: found user: " +
singleSnapshot.getValue(User.class).getUsername());
mUserList.add(singleSnapshot.getValue(User.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
};
vfollowerslistview.setAdapter(viewfollowersadapter);
}
}
我似乎无法适应整个代码。
根据您的评论,您将得到以下错误:
原因:java。原因:java。lang.NullPointerException:尝试调用虚拟方法“java”。String.com。实例希望我的申请。模型。使用者对空对象引用执行getUser_id()
因为调用getUser\u id()
方法的mUser
对象的值为null
。发生这种情况是因为您根本没有初始化代码中的User
对象。要解决此问题,请更改以下代码行:
Query query = FirebaseDatabase.getInstance().getReference()
.child("Followers")
.child(mUser.getUser_id());
到
Query query = FirebaseDatabase.getInstance().getReference()
.child("Followers")
.child(mAuth.getCurrentUser().getUid());
在其中mAuth.getMONtUser()
返回一个Firebase User
对象,因此您可以获得正确的uid
。
所以目前,这是我所做的(不起作用): 这是与建议匹配的代码: 以及由junit测试生成的跟踪:
获取关注的问题列表 关注一个问题 取消关注一个问题 获取关注的问题列表 GET /api/v2/user/question-watches 参数 参数 类型 描述 limit Integer 默认 20 ,获取列表条数,修正值 1 - 30。 offset integer 默认 0 ,数据偏移量,传递之前通过接口获取的总数。 响应 Status: 200 OK [ { "id":
这一章,我们要为演示应用添加社交功能,允许用户关注(及取消关注)其他人,并在主页显示被关注用户发布的微博。我们会在 12.1 节学习如何建立用户之间的关系,然后在 12.2 节编写相应的网页界面(还会介绍 Ajax)。最后,在 12.3 节实现功能完善的动态流。 这是本书最后一章,有些内容具有挑战性,比如说,为了实现动态流,我们会使用一些 Ruby 和 SQL 技巧。 通过这些示例,你会了解到 R
我有这个应用程序,它从数据库中获取用户数据,使用他们登录的用户名。一旦他们登录到检索他们的帐户信息的页面,用户名就会被传递。应用程序崩溃了,说检索信息是错误的,有人能帮忙吗? 数据库代码 要检索数据的代码
我正在构建一个应用程序,前端有Angular,背面有Laravel。我的问题是,如何通过在帖子表上使用他们的“author_id”来返回/检索用户的全名,而在用户表上使用“user_id”?我有一个用户表和帖子表看起来像这样: 我的用户模型看起来像这样: 我的Post Model看起来像这样: 假设我的路由是正确的(是的,如果需要,我可以提供),我的PostController有以下方法来检索帖子
问题内容: 使用JDBC时,我经常遇到类似 我问自己(也包括代码作者)为什么不使用标签来检索列值: 我听到的最好的解释是关于性能的。但是实际上,这使处理速度非常快吗?我不相信,尽管我从未进行过测量。我认为,即使按标签检索会稍慢一些,但它仍具有更好的可读性和灵活性。 因此,有人可以给我很好的解释,避免使用列索引而不是列标签来检索列值吗?两种方法的优缺点(也许涉及某些DBMS)是什么? 问题答案: 默