3

FirebaseRecyclerAdapter - populateViewHolderは初めてデータを入力するのではなく、アプリケーションを終了して開いたときに、データはRecyclerView View Holderにバインドされます。FirebaseRecyclerAdapter - populateViewHolderは、データが初めて実行されたときにデータを入力していませんか?

データが最初に投入されていない理由を私は得ていないのです

が、それは空白の画面

を示しているがここに私のMainActivity

mDatabase = FirebaseDatabase.getInstance().getReference(); 
// [END create_database_reference] 

mRecycler = (RecyclerView) findViewById(R.id.recycler_view); 
mRecycler.setHasFixedSize(true); 
setSupportActionBar(toolbar); 
final LinearLayoutManager layoutManager = new LinearLayoutManager(getApplicationContext()); 
layoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
layoutManager.setReverseLayout(true); 
layoutManager.setStackFromEnd(true); 
mRecycler.setLayoutManager(layoutManager); 




// Set up FirebaseRecyclerAdapter with the Query 
//Query postsQuery = mDatabase.child("EN").child("Courses") ; 
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("EN").child("Courses"); 
ref.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     Toast.makeText(MainActivity.this, dataSnapshot.toString(), Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Toast.makeText(MainActivity.this, databaseError.toString(), Toast.LENGTH_SHORT).show(); 
    } 
}); 
Log.d("ref", String.valueOf(ref)); 
// Log.d("Query", String.valueOf(postsQuery)); 
mAdapter = new FirebaseRecyclerAdapter<Course, CourseViewHolder>(Course.class, R.layout.item_home, 
     CourseViewHolder.class, ref) { 
    @Override 
    protected void populateViewHolder(final CourseViewHolder viewHolder, final Course model, final int position) { 
     viewHolder.bindToPost(model); 
    } 

}; 
mRecycler.setAdapter(mAdapter); 

そしてViewHolder

public class CourseViewHolder extends RecyclerView.ViewHolder { 

    public TextView titleView; 
    public TextView descriptionView; 
    public ImageView IconView; 
    public TextView lessonCountView; 


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

     titleView = (TextView) itemView.findViewById(R.id.title); 
     descriptionView = (TextView) itemView.findViewById(R.id.description); 
     //IconView = (ImageView) itemView.findViewById(R.id.star); 
    } 

    public void bindToPost(Course post) { 
     // Log.d("Post", String.valueOf(post)); 
     titleView.setText(post.getName()); 
     descriptionView.setText(post.getDescription()); 

    } 
} 

マイモデルPOJO

です
public class Course { 

    public String description; 
    public String title; 

    public Course() { 
     // Default constructor required for calls to DataSnapshot.getValue(Post.class) 
    } 

    public Course(String title, String description) { 
     // this.description = author; 
     this.title = title; 
     this.description =description; 
    } 

    public String getName() { 
     return title; 
    } 

    public String getDescription() { 
     return description; 
    } 
} 
+0

クロスポスト:https://github.com/firebase/FirebaseUI-Android/issues/279 –

答えて

4

解決策が見つかりました。

問題はRecyclerViewで、高さはwrap_contentでした。したがって、RecyclerViewの高さがmatch_parentに設定されていることを確認してください。これでこの問題は修正されます。あなたがmatch_parentを使用したくない場合は、呼び出すべきではありません

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recycler_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scrollbars="vertical" /> 
2

mRecycler.setHasFixedSize(true);

関連する問題