私はListViewからRecyclerViewに切り替えました。Firebaseのデータを使ってRecyclerViewアイテムを動的に追加します。しかし、私はRecyclerViewを正常に生成できません。動的RecyclerViewでデータが取り込まれない
現在、画面は空白であり、CardViewアイテムはビューに追加されていません。私はRecyclerViewアダプタに問題があると仮定しています。
マイリスナー、私はここでmCommentArrayListに追加して、後で私のRecyclerViewアダプタで、このデータからプル:
ここmUpdateRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
setImage(dataSnapshot);
setQuestion(dataSnapshot);
createInitialCommentIDArray(dataSnapshot);
mNumberOfCommentsAtPoll = (int) dataSnapshot.child(COMMENTS_LABEL).getChildrenCount();
for (int i = 0; i < mNumberOfCommentsAtPoll; i++) {
String commentID = (String) dataSnapshot.child(COMMENTS_LABEL).child(mCommentIDArrayList.get(i)).child("COMMENT").getValue();
Log.v("COMMENT_ID", "The comment ID is " + commentID);
String userID = (String) dataSnapshot.child(COMMENTS_LABEL).child(mCommentIDArrayList.get(i)).child("USER_ID").getValue();
Log.v("USER_ID", "The user ID is " + userID);
mCommentArrayList.add(0 , new Comments(mUserAvatar, userID, commentID));
mCommentAdapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
は私RecyclerViewアダプタです:あなたgetItemCountで
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
// Provide a reference to the views for each data item
// Complex data items may need more than one view per item, and
// you provide access to all the views for a data item in a view holder
public class ViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
protected ImageView userAvatar;
protected TextView userID;
protected TextView userComment;
public ViewHolder(View v) {
super(v);
userAvatar = (ImageView) findViewById(R.id.profile_image_avatar);
userID = (TextView) findViewById(R.id.user_ID);
userComment = (TextView) findViewById(R.id.user_comment);
}
}
// Provide a suitable constructor (depends on the kind of dataset)
public MyAdapter(ArrayList<Comments> myDataset) {
mCommentArrayList = myDataset;
}
// Create new views (invoked by the layout manager)
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new view
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.individual_comment, parent, false);
// set the view's size, margins, paddings and layout parameters
return new ViewHolder(v);
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.userComment.setText(mCommentArrayList.get(position).getUserComment());
holder.userID.setText(mCommentArrayList.get(position).getUserID());
}
// Return the size of your dataset (invoked by the layout manager)
@Override
public int getItemCount() {
return mNumberOfCommentsAtPoll;
}
}
あなたの 'getItemCount()'に 'mNumberOfCommentsAtPoll'を返します。しかし、私は 'MyAdapter'に' mNumberOfCommentsAtPoll'をどこに宣言しているのか分かりません。 –
私はそれが問題ではないことを知っていますが、指摘に感謝 – tccpg288