2016-05-24 11 views
0

ListViewからRecyclerViewに切り替えましたが、モバイルデバイスに表示されているアイテムが表示されません。RecyclerViewでCardViewアイテムが表示されない

私は実際にはgetItemCount()メソッドとは関係ありません。テストするためにそのリターンに数値をハードコードしているためです。ここで

は、私は、新しいデータを引っ張ってFirebaseを使用し、私の初期設定である:ここでは

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Firebase.setAndroidContext(this); 
    setContentView(R.layout.activity_discussion); 
    toolbar = (Toolbar) findViewById(R.id.tool_bar); 
    setSupportActionBar(toolbar); 
    setTitle(R.string.discussion_title_text); 

    mDateFormat = new SimpleDateFormat("MM-dd-yyyy"); 
    mDate = new Date(); 
    mCurrentDateString = mDateFormat.format(mDate); 

    mBaseRef = new Firebase(FIREBASE_URL); 
    mPollsRef = mBaseRef.child(POLLS_LABEL); 
    mUpdateRef = mPollsRef.child(mCurrentDateString).child(String.valueOf(mPollIndex + 1)); 
    mCommentsRef = mUpdateRef.child(COMMENTS_LABEL); 

    mPollImage = (ImageView) findViewById(R.id.comments_image); 
    mPollCommentQuestion = (TextView) findViewById(R.id.poll_comment_question); 

    mUserComment = (EditText) findViewById(R.id.user_comment); 
    mUserAvatar = (ImageView) findViewById(R.id.profile_image_avatar); 
    mPollCommentsList = (RecyclerView) findViewById(R.id.poll_comments_list); 
    LinearLayoutManager llm = new LinearLayoutManager(this); 
    llm.setOrientation(LinearLayoutManager.VERTICAL); 
    mPollCommentsList.setLayoutManager(llm); 
    mCommentArrayList = new ArrayList<Comments>(); 
    mCommentIDArrayList = new ArrayList<String>(); 
    mPollCommentsList.setAdapter(mCommentAdapter); 
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 

    Intent intent = getIntent(); 
    String pollID = intent.getStringExtra("POLL_ID"); 
    mPollIndex = intent.getIntExtra("POLL_INDEX", 0); 


    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) { 

     } 
    }); 
    mCommentAdapter = new MyAdapter(mCommentArrayList); 

    //TODO: Store unique comment ID's in an array 

    //TODO: Figure out how to programatically add images to AWS and then store URL in Firebase 
    ImageView fab = (ImageView) findViewById(R.id.add_comment); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      HashMap<String, Object> commentMap = new HashMap<String, Object>(); 
      commentMap.put("USER_ID", mBaseRef.getAuth().getUid()); 
      commentMap.put("COMMENT", mUserComment.getText().toString()); 
      mUpdateRef.child(COMMENTS_LABEL).push().updateChildren(commentMap); 
      hideKeyboard(view); 
      mUserComment.setText(""); 
      Toast.makeText(getApplicationContext(), R.string.comment_added, Toast.LENGTH_LONG).show(); 
     } 
    }); 
} 

は私のアダプタです:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { 

    private ArrayList<Comments> mDataSet; 

    // 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) { 
     mDataSet = 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 
     ViewHolder x = new ViewHolder(v); 

     return x; 
    } 

    // 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; 
    } 
} 
+0

あなたはrecyclerviewでそれを設定する前にmCommentAdapterをinitiallizeする必要があります。 – Sabari

+0

このように:mCommentAdapter = new MyAdapter(mCommentArrayList); mPollCommentsList.setAdapter(mCommentAdapter); – Sabari

答えて

0

はあなたのRecyclerAdapterLayoutManagerを設定していることを確認します。最も一般的な方法は、次のようになります。

mCommentAdapter.setLayoutManager(new LinearLayoutManager(this));

関連する問題