public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.activity_course_fragment, null);
textView=v.findViewById(R.id.list);
final DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query usersQuery = rootRef.child("Users").orderByChild("name").equalTo("ANAND");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(final DataSnapshot ds : dataSnapshot.getChildren()) {
String course = ds.child("course").getValue(String.class);
Log.d(TAG, course);
Query courseRef = rootRef.child("Course").orderByChild("name").equalTo(course);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String name = ds.child("name").getValue(String.class);
final String url = ds.child("url").getValue(String.class);
Log.d(TAG, name + " / " + url);
textView.setText(name);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
courseRef.addListenerForSingleValueEvent(eventListener);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
usersQuery.addListenerForSingleValueEvent(valueEventListener);
此代码运行良好,但是当我再次重新安装此代码时,它无法根据我的需要运行。我实际上需要为每个用户显示他们注册的特定课程。但是这里只显示“ ANAND”课程。我该如何解决这个问题?
答案 0 :(得分:1)
鉴于您以Query usersQuery = rootRef.child("Users").orderByChild("name").equalTo("ANAND");
开头,因此仅显示ANAND
的课程是有意义的。
要向所有用户显示相同内容,请删除您的条件:
Query usersQuery = rootRef.child("Users");
如果您其余的代码已经可以使用,它将继续使用此更改。