Java 从片段查询数据库
完整代码Java 从片段查询数据库,java,android,database,firebase,firebase-realtime-database,Java,Android,Database,Firebase,Firebase Realtime Database,完整代码 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = inflater.inflate(R.layout.fragment_chats, container, false); noUsersText = (TextView) rootView.
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_chats, container, false);
noUsersText = (TextView) rootView.findViewById(R.id.noUsersText);
mUsersList = (RecyclerView) rootView.findViewById(R.id.usersList);
mUsersList.addItemDecoration(new DividerItemDecoration(getContext(),
DividerItemDecoration.HORIZONTAL));
mAuth = FirebaseAuth.getInstance();
currentUser = mAuth.getCurrentUser();
UID = mAuth.getCurrentUser().getUid();
mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("UserData");
mProgressDialogue = new ProgressDialog(getActivity());
mProgressDialogue.setMessage("Loading...");
mProgressDialogue.show();
mUsersList.setLayoutManager(new LinearLayoutManager(getActivity()));
FirebaseRecyclerOptions<AllUsers> options =
new FirebaseRecyclerOptions.Builder<AllUsers>()
.setQuery(mDatabaseReference, AllUsers.class)
.build();
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<AllUsers, HomeScreen_Contacts.UsersViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull HomeScreen_Contacts.UsersViewHolder holder, int position, @NonNull AllUsers model) {
holder.setName(model.getName());
holder.setStatus(model.getStatus());
holder.setImage(model.getImage());
final String userId = getRef(position).getKey();
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference().child("UserData").child(userId);
rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
userName = dataSnapshot.child("Name").getValue().toString();
Intent intent = new Intent(getActivity(), Chat.class);
intent.putExtra("Recievers_Id", userId);
intent.putExtra("Recievers_Name", userName);
startActivity(intent);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
}
@Override
public HomeScreen_Contacts.UsersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.all_users_layout, parent, false);
return new HomeScreen_Contacts.UsersViewHolder(view);
}
};
mUsersList.setAdapter(firebaseRecyclerAdapter);
return rootView;
}
public static class UsersViewHolder extends RecyclerView.ViewHolder {
View mView;
public UsersViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setName(String name) {
TextView mDisplayName = (TextView) mView.findViewById(R.id.display_name);
mDisplayName.setText(name);
}
public void setStatus(String status) {
TextView mDisplayStatus = (TextView) mView.findViewById(R.id.display_status);
mDisplayStatus.setText(status);
}
public void setImage(String image) {
CircularImageView mDisplayImage = (CircularImageView) mView.findViewById(R.id.circleImageView);
Picasso.get().load(image).into(mDisplayImage);
}
}
@Override
public void onStart() {
super.onStart();
firebaseRecyclerAdapter.startListening();
}
@Override
public void onStop() {
super.onStop();
if(firebaseRecyclerAdapter != null) {
firebaseRecyclerAdapter.stopListening();
}
}
public View onCreateView(布局、充气机、视图组容器、,
Bundle savedInstanceState){
rootView=充气机。充气(R.layout.fragment\u chats,容器,false);
noUsersText=(TextView)rootView.findViewById(R.id.noUsersText);
mUsersList=(RecyclerView)rootView.findviewbyd(R.id.usersList);
mUsersList.addItemDecoration(新的DividerItemDecoration(getContext()),
DividerItemDecoration.HORIZONTAL);
mAuth=FirebaseAuth.getInstance();
currentUser=mAuth.getCurrentUser();
UID=mAuth.getCurrentUser().getUid();
mDatabaseReference=FirebaseDatabase.getInstance().getReference().child(“用户数据”);
mProgressDialogue=newprogressDialog(getActivity());
设置消息(“加载…”);
mProgressDialogue.show();
setLayoutManager(新的LinearLayoutManager(getActivity());
FirebaseRecyclerOptions选项=
新的FirebaseRecyclerOptions.Builder()
.setQuery(mDatabaseReference,AllUsers.class)
.build();
firebaseRecyclerAdapter=新的firebaseRecyclerAdapter(选项){
@凌驾
BindViewHolder上的受保护无效(@NonNull主屏幕_Contacts.users查看文件夹持有人,int位置,@NonNull AllUsers型号){
holder.setName(model.getName());
holder.setStatus(model.getStatus());
setImage(model.getImage());
最后一个字符串userId=getRef(position).getKey();
holder.mView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference().child(“UserData”).child(userId);
rootRef.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
userName=dataSnapshot.child(“Name”).getValue().toString();
Intent Intent=新的Intent(getActivity(),Chat.class);
intent.putExtra(“接收者标识”,用户标识);
intent.putExtra(“接收者姓名”,用户名);
星触觉(意向);
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
});
}
@凌驾
公共主屏幕_Contacts.UsersViewHolder onCreateViewHolder(视图组父级,int-viewType){
View=LayoutInflater.from(parent.getContext())
.充气(R.layout.all_users_layout,parent,false);
返回新的主屏幕联系人。UsersViewHolder(视图);
}
};
mUsersList.setAdapter(firebaseRecyclerAdapter);
返回rootView;
}
公共静态类UsersViewHolder扩展了RecyclerView.ViewHolder{
视图视图;
公共用户查看文件夹(查看项目视图){
超级(项目视图);
mView=项目视图;
}
公共void集合名(字符串名){
TextView mDisplayName=(TextView)mView.findViewById(R.id.display\u name);
mDisplayName.setText(名称);
}
公共无效设置状态(字符串状态){
TextView mDisplayStatus=(TextView)mView.findViewById(R.id.display_status);
mDisplayStatus.setText(状态);
}
公共void setImage(字符串图像){
CircularImageView mDisplayImage=(CircularImageView)mView.findViewById(R.id.circleImageView);
Picasso.get().load(image).into(mDisplayImage);
}
}
@凌驾
public void onStart(){
super.onStart();
firebaseRecyclerAdapter.startListening();
}
@凌驾
公共void onStop(){
super.onStop();
如果(firebaseRecyclerAdapter!=null){
firebaseRecyclerAdapter.stopListening();
}
}
我必须使用这个片段的查询顺序
我的代码
final ArrayList<AllUsers> messages = new ArrayList<>();
mDatabaseReference.child(UID).orderByChild("LastMessage").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
messages.add(dataSnapshot.getValue(AllUsers.class));
}
Collections.reverse(messages);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
final ArrayList messages=new ArrayList();
mDatabaseReference.child(UID).orderByChild(“LastMessage”).addListenerForSingleValueEvent(新值EventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
if(dataSnapshot.exists()){
对于(DataSnapshot dataSnapshot1:DataSnapshot.getChildren()){
添加(dataSnapshot.getValue(alluser.class));
}
收集。反向(消息);
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
但我不知道该把这个密码放在哪里。。。或者这是我想要做的事情的正确方法。有人请帮帮我。几天以来一直困在这里。在活动中,我们有
onCreate
作为活动开始时运行的方法,在片段中有onCreateView
。在活动上启动firebase侦听器时,我们使用onStart
和onStop
,这与片段的情况相同
将您的代码放入
onCreateView
您的问题很肤浅,请说明您想做什么,代码很好,可以在片段中使用。我应该将代码放入onCreateView中的哪个位置是我的问题?它会工作吗?好的,lemme答案是一种推荐的方法,您可以使用FirebaseRecyclerAdapter从Firebase实时数据库检索数据并将其显示在RecyclerView
中。在oncreateview@emiliajames中,我曾尝试将其放入oncreate中,但没有成功。这是一个不同的问题,我可以在这里为您调试代码fiverr.com/lucemanb/help-you-debug-your-android-studio-errors