Может ли кто-нибудь помочь мне здесь, я в замешательстве, поскольку я пробовал много примеров, но я все время ошибаюсь. Думаю, что firebase не подходит для начинающих, я пытаюсь добиться получения профиля из своей таблицы под названием Users и пользователей. Извлеките изображение профиля, используя Glide или Picasso, внутри этой таблицы пользователей у меня есть Имя пользователя, Пароль, электронная почта, profilePi c, userIds, URL-адрес моего профиля сохранен в profilePi c дочерней таблице при регистрации пользователя, я попробовал некоторый код но это дает ноль. Вот что я пробовал.
String url = dataSnapshot.child(Common.currentUser.getUserName() +"/"+ "profilePic").getValue().toString();
Picasso.with(getContext()).load(url).into(viewHolder.profileImageView);
Это работало при извлечении изображения, но показывало только изображения профиля на currentUserr, поэтому все держатели изображений имеют одно и то же изображение, также я попробовал это сначала, который извлекает URL вручную.
String url="https://firebasestorage.googleapis.com/v0/b/learnbravanese.appspot.com/o/images%2Fmoh2%2Fmoh2back?alt=media&token=d97130a4-c6ac-409f-a0ad-71fdcdea1e97";//Retrieved url as mentioned above
Picasso.with(getContext()).load(url).into(viewHolder.profileImageView);
, а также с этим кодом
String url = dataSnapshot.child(users.child("/")+ "/profilePic").getValue().toString();
Picasso.with(getContext()).load(url).into(viewHolder.profileImageView);
Я правильно понимаю, что путь верен, но я все еще получаю ошибку, подобную этой
Invalid Firebase Database path: https://learnbravanese.firebaseio.com/Users/mo/profilePic. Firebase Database paths must not contain '.', '#', '$', '[', or ']'
Может кто-то помочь мне, пожалуйста, как получить каждое изображение для своего пользователя и показать его на этом фрагменте?
вот мой полный фрагмент.
public class RankingFragment extends Fragment {
StorageReference storageReference;
DatabaseReference users,defaultimages,scoretbl,imageTable;
private Uri filepath;
private final int PICK_IMAGE_REQUEST = 71;
private int id;
DataSnapshot dataSnapshot;
private Context context;
String Storage_Path = "All_Image_Uploads/";
View myFragment;
FirebaseDatabase database;
RecyclerView rankingList;
LinearLayoutManager layoutManager;
FirebaseRecyclerAdapter<Ranking,RankingViewHolder> adapter;
DatabaseReference questionScore,rankingTable;
int sum = 0; //score is default by zero
private FirebaseAuth mAuth;
// Root Database Name for Firebase Database.
public static final String Database_Path = "All_Image_Uploads_Database";
public static RankingFragment newInstance(){
RankingFragment rankingFragment = new RankingFragment();
return rankingFragment ;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
database = FirebaseDatabase.getInstance();
questionScore = database.getReference("Question_Score");
rankingTable = database.getReference("Ranking");
imageTable = database.getReference("DefaultImages");
storageReference = FirebaseStorage.getInstance().getReference("All_Image_Uploads/");
users = FirebaseDatabase.getInstance().getReference("Users");
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
myFragment = inflater.inflate(R.layout.fragment_ranking,container,false);
rankingList = (RecyclerView) myFragment.findViewById(R.id.ranking_list);
layoutManager = new LinearLayoutManager(getActivity());
rankingList.setHasFixedSize(true);
layoutManager.setReverseLayout(true);
layoutManager.setStackFromEnd(true);
rankingList.setLayoutManager(layoutManager);
// storageReference = FirebaseStorage.getInstance().getReference();
users = FirebaseDatabase.getInstance().getReference("Users");
defaultimages = FirebaseDatabase.getInstance().getReference().child("Users");
final String pathtobackimage;
updateScore(Common.currentUser.getUserName(), new RankingCallBack<Ranking>() {
@Override
public void callBack(Ranking ranking) {
//Ranking Score update
rankingTable.child(ranking.getUserName())
.setValue(ranking);
// showRanking();
}
});
adapter = new FirebaseRecyclerAdapter<Ranking, RankingViewHolder>(
Ranking.class,
R.layout.ranking_layout,
RankingViewHolder.class,
rankingTable.orderByChild("score")
) {
@Override
protected void populateViewHolder(final RankingViewHolder viewHolder, final Ranking model, int position) {
// StorageReference backref = storageReference.child("All_Image_Uploads/1584768076891.jpg");
// FirebaseUser firebaseUser = mAuth.getCurrentUser();
ImageView imageView;
viewHolder.name_text.setText(model.getUserName());
viewHolder.score_text.setText(String.valueOf(model.getScore()));
// String url = "https://firebasestorage.googleapis.com/v0/b/learnbravanese.appspot.com/o/images%2Fmoh2%2Fmoh2back?alt=media&token=d97130a4-c6ac-409f-a0ad-71fdcdea1e97";
;
//users = FirebaseDatabase.getInstance().getReference().child("Users").child(model.getUserName());
users.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//String imageUrl = dataSnapshot.child("profilePic").getValue().toString();
String url = dataSnapshot.child(Common.currentUser.getUserName() +"/"+ "profilePic").getValue().toString();
// String url="https://firebasestorage.googleapis.com/v0/b/learnbravanese.appspot.com/o/images%2Fmoh2%2Fmoh2back?alt=media&token=d97130a4-c6ac-409f-a0ad-71fdcdea1e97";//Retrieved url as mentioned above
Picasso.with(getContext()).load(url).into(viewHolder.profileImageView);
// String link =dataSnapshot.child("profilePic").getValue().toString();
Picasso.with(getContext()).load(url).into(viewHolder.profileImageView);
// Picasso.with(getContext()).load(dataSnapshot.child("profilePic").getValue(User_Info.class).toString())
// .into(viewHolder.profileImageView);
// Glide.with(getContext()).load(users.child(model.getUserName() +"/"+ "profilePic"))
// .into(viewHolder.profileImageView);
// Glide.with(getContext()).load(model.getImage()).into(viewHolder.profileImageView);
// Glide.with(getContext()).load(model.getUrlProfilePic())
// .into(viewHolder.profileImageView);
// Glide.with(viewHolder.profileImageView.getContext()).load(model.getProfilepic()).into(viewHolder.profileImageView);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
viewHolder.setItemClickListener(new ItemClickListener() {
@Override
public void onClick(View view, int position, boolean isLongClick) {
Intent scoreDetail = new Intent(getActivity(),Score_Detail.class);
scoreDetail.putExtra("viewUser",model.getUserName());
startActivity(scoreDetail);
}
});
}
};
adapter.notifyDataSetChanged();
rankingList.setAdapter(adapter);
return myFragment;
}
private void updateScore(final String userName, final RankingCallBack<Ranking> callBack) {
questionScore.orderByChild("user").equalTo(userName)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot data:dataSnapshot.getChildren())
{
Question_Score quest = data.getValue(Question_Score.class);
sum += Integer.parseInt(quest.getScore());
}
Ranking ranking = new Ranking(userName,sum,userName,userName);
callBack.callBack(ranking);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}