2017-10-14 7 views
2

Firebaseデータベースからデータを取得しようとしていますが、画面に何も表示されません。何も起こっていない理由はわからないので、何の誤りも見ません。誰でも間違いを見つけられますか?私はStackoverflowメンバからの助けを借りてFirebaseUIのガイドに従った。Android - RecyclerViewが動作しない

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_stopandmap, container, false); 

    Query keyQuery = FirebaseDatabase.getInstance().getReference("/Addresses/Street 10/users"); 
    DatabaseReference dataRef = FirebaseDatabase.getInstance().getReference("/User"); 
    recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerview); 
    recyclerView.setHasFixedSize(true); 
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 

    FirebaseRecyclerOptions<User> options = new FirebaseRecyclerOptions.Builder<User>() 
      .setIndexedQuery(keyQuery, dataRef, User.class) 
      .build(); 

    FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<User, BetViewHolder>(options) { 
     @Override 
     public BetViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View view = LayoutInflater.from(parent.getContext()) 
        .inflate(R.layout.item_row, parent, false); 

      return new BetViewHolder(view); 
     } 

     @Override 
     protected void onBindViewHolder(BetViewHolder holder, int position, User model) { 
      holder.setUserName(model.getUsername()); 
     } 


    }; 

    recyclerView.setAdapter(adapter); 

    return rootView; 


} 


public static class BetViewHolder extends RecyclerView.ViewHolder { 

    TextView tw; 

    public BetViewHolder(View itemView) { 
     super(itemView); 

     tw = (TextView) itemView.findViewById(R.id.usersTextview); 
    } 

    public void setUserName(String username) { 
     tw.setText("Hej" + username); 
     Log.e("Activity", "In Vehicle " + username); 

    } 
} 

Userクラス:FirebaseUIのバージョン3.0では

public class User { 
    private String username; 
    private String usertype; 

    public User() { 
    } 

    public String getUsername() { 
     return this.username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getUsertype() { 
     return usertype; 
    } 

    public void setUsertype(String usertype) { 
     this.usertype = usertype; 
    } 
} 
+0

デバッグとそこアダプタがadapter.getItemCountで空だった場合、私がチェックデータやない – nomag

+0

であり、それはそれは空で判明した場合、アダプタの内容を確認してください。私はなぜそれが空であるか分からない – JDoe

+0

これはkeyQueryとdataRefが異なるfirebaseノードを指しているからです。どちらも同じ親ノードを指している必要があります。 –

答えて

2

、あなたが明示的に必要なデータが

Database

断片は、画面上の通りとユーザーを表示する必要がありますアダプタのstartListening() & stopListening()を呼び出して、データベースからのデータ取得の開始/停止を指示します。

アダプタのライフサイクルは、 - 以前のバージョンではアダプタはすぐにインスタンス化時 を聴き始めたと リスニングを停止するcleanup()コールを持っていました。 3.xでは、startListening()stopListening()を明示的に呼び出すか、LifecycleOwnerをオプションビルダーに渡す必要があります。

出典:Upgrading to FirebaseUI 3.0

関連する問題