2017-10-14 2 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); 

    } 
} 

사용자 클래스 :

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

관련 문제