簡體   English   中英

無法使用FirebaseRecyclerViewAdapter從Firebase實時數據庫檢索數據

[英]Not able to retrive data from Firebase Realtime Database using FirebaseRecyclerViewAdapter

無法從數據庫檢索Post鍵和值。這是我第一次嘗試使用FirebaseRecyclerAdapter從Firebase數據庫檢索數據。 但是我不知道問題出在哪里。 我也嘗試調試,但是編譯器不會進入onCreateViewHolder或onBindViewHolder函數。 但是我完全遵循FirebaseUI進行實時數據庫參考。

NEWSFEEDBANK.JAVA

private FirebaseRecyclerAdapter<NewsFeed, NewsFeedViewHolder> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_news_feed_bank);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    SharedPreferences sharedPreferences = getSharedPreferences("BankData", Context.MODE_PRIVATE);
    username = sharedPreferences.getString("UserName", "UserName");

    recyclerView = (RecyclerView) findViewById(R.id.recycler_View_Bank);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    mDatabase = FirebaseDatabase.getInstance().getReference().child("Posts");
    mAuth = FirebaseAuth.getInstance();

    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            if (mAuth.getCurrentUser() == null) {
                Intent loginIntent = new Intent(NewsFeedBank.this, Login.class);
                loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                startActivity(loginIntent);
            }
        }
    };

    DisplayPosts();
}

private void DisplayPosts() {

    FirebaseRecyclerOptions<NewsFeed> options = new FirebaseRecyclerOptions.Builder<NewsFeed>().setQuery(mDatabase, NewsFeed.class).build();

    adapter = new FirebaseRecyclerAdapter<NewsFeed, NewsFeedViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull NewsFeedViewHolder holder, int position, @NonNull NewsFeed model) {

          //  holder.title.setText(model.getTitle());
        //    holder.des.setText(model.getDesc());
            holder.usern.setText(model.getUsername());

        }

        @NonNull
        @Override
        public NewsFeedViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_items, viewGroup, false);
            NewsFeedViewHolder holder = new NewsFeedViewHolder(view);
            return holder;
        }
    };
    recyclerView.setAdapter(adapter);


}

@Override
protected void onStart() {
    super.onStart();
    adapter.startListening();
}

@Override
protected void onStop() {
    super.onStop();
    adapter.stopListening();
}

public static class NewsFeedViewHolder extends RecyclerView.ViewHolder {
    TextView title, des, usern;
    View mView;

    public NewsFeedViewHolder(@NonNull View itemView) {
        super(itemView);
        usern = (TextView) mView.findViewById(R.id.view_poster_username);
    }

}}

NEWSFEED.JAVA

導入com.google.firebase.storage.StorageReference;

公共類NewsFeed {

private String Title, Description ,UserName;
private StorageReference imageUrl;

public NewsFeed(String UserName, String Title, String Description) {
    this.Title = Title;
    this.Description = Description;
    this.UserName = UserName;
}
public NewsFeed() {
}

public void setUsername(String UserName) {
    this.UserName = UserName;
}
public void setTitle(String Title) {
    this.Title = Title;
}
public void setDesc(String Description) {
    this.Description = Description;
}

public String getTitle() {
    return Title;
}
public String getDesc() {
    return Description;
}
public String getUsername() {
    return UserName;
}}

E / AndroidRuntime:致命例外:主進程:com.example.admin.firstapp,PID:1151 java.lang.NullPointerException:嘗試在其上調用虛擬方法'android.view.View android.view.View.findViewById(int)' com.example.admin.firstapp.NewsFeedBank $ NewsFeedViewHolder。(NewsFeedBank.java:119)處com.example.admin.firstapp.NewsFeedBank $ 3.onCreateViewHolder(NewsFeedBank.java:92)處的空對象引用.firstapp.NewsFeedBank $ 3.onCreateViewHolder(NewsFeedBank.java:78)在android.support.v7.widget.RecyclerView $ Adapter.createViewHolder(RecyclerView.java:6794)在android.support.v7.widget.RecyclerView $ Recycler.tryGetViewHyeradad( android.support.v7.widget.RecyclerView $ Recycler.getViewForPosition(RecyclerView.java:5858)位於android.support.v7.widget.RecyclerView $ Recycler.getViewForPosition(RecyclerView.java:5854)位於RecyclerView.java:5975) .support.v7.widget.LinearLayoutManager $ LayoutState.next(LinearLayoutManager.java:2230)在android.support .v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557)位於android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)位於android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java :612)位於android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3924)(位於android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3641))。 android.view.View.layout(View.java:20672)位於android.view.ViewGroup.layout(ViewGroup.java:6194)位於android.support.constraint.ConstraintLayout.onLayout的RecyclerView.onLayout(RecyclerView.java:4194) (ConstraintLayout.java:1915)在android.view.View.layout(View.java:20672)在android.view.ViewGroup.layout(ViewGroup.java:6194)在android.support.design.widget.CoordinatorLayout.layoutChild(位於android.support.design.widget的CoordinatorLayout.java:1183)。位於android.support.design.widget.Vie的CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:870) android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:146)上的wOffsetBehavior.layoutChild(ViewOffsetBehavior.java:62)在android.support.design.widget.ViewOffsetBehavior.onLayoutChild(android:java:java。 .support.design.widget.AppBarLayout $ ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1556)位於android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:888)

Firebase數據庫結構: Firebase數據庫結構

嘗試這個

usern = (TextView) itemView.findViewById(R.id.view_poster_username);

代替

usern = (TextView) mView.findViewById(R.id.view_poster_username);

如果再次遇到錯誤,請發布您的布局文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM