2017-06-02 27 views
0

私はandroid programmingには新しく、私にはrecyclerviewに関する問題があります(私はAndroidプログラミングの本と練習を読んでいます)。ここでは、クラスのコードだ100の項目Android RecyclerView 1件のアイテムのみを表示しています。

:あなたが助けを事前に

package com.training.criminalintent; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.CheckBox; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.List; 


public class CrimeListFragment extends Fragment { 

    private RecyclerView mCrimeRecyclerView; 
    private CrimeAdapter mAdapter; 

    @Override 
    public View onCreateView(LayoutInflater inflater,ViewGroup container, 
         Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_crime_list, container, false); 
     mCrimeRecyclerView = (RecyclerView) view 
       .findViewById(R.id.crime_recycler_view); 
     mCrimeRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 

     updateUI(); 

     return view; 
    } 

    private class CrimeHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ 

     private Crime mCrime; 

     private TextView mTitleTextView; 
     private TextView mDateTextView; 
     private CheckBox mSolvedCheckBox; 

     public CrimeHolder(View itemView) { 
      super(itemView); 
      itemView.setOnClickListener(this); 
      mTitleTextView = (TextView) 
        itemView.findViewById(R.id.list_item_crime_title_text_view); 
      mDateTextView = (TextView) 
        itemView.findViewById(R.id.list_item_crime_date_text_view); 
      mSolvedCheckBox = (CheckBox) 
        itemView.findViewById(R.id.list_item_crime_solved_check_box); 
     } 

     public void bindCrime(Crime crime) { 
      mCrime = crime; 
      mTitleTextView.setText(mCrime.getTitle()); 
      mDateTextView.setText(mCrime.getDate().toString()); 
      mSolvedCheckBox.setChecked(mCrime.isSolved()); 
     } 

     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(getActivity(), CrimeActivity.class); 
      startActivity(intent); 
     } 
    } 

    private class CrimeAdapter extends RecyclerView.Adapter<CrimeHolder> { 
     private List<Crime> mCrimes; 
     public CrimeAdapter(List<Crime> crimes) { 
      mCrimes = crimes; 
     } 
     @Override 
     public int getItemCount() { 
      return mCrimes.size(); 
     } 
     @Override 
     public CrimeHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      LayoutInflater layoutInflater = LayoutInflater.from(getActivity()); 
      View view = layoutInflater 
        .inflate(R.layout.list_item_crime, parent, false); 
      return new CrimeHolder(view); 
     } 
     @Override 
     public void onBindViewHolder(CrimeHolder holder, int position) { 
      Crime crime = mCrimes.get(position); 
      holder.bindCrime(crime); 
     } 
    } 

    private void updateUI() { 
     CrimeLab crimeLab = CrimeLab.get(getActivity()); 
     List<Crime> crimes = crimeLab.getCrimes(); 
     mAdapter = new CrimeAdapter(crimes); 
     mCrimeRecyclerView.setAdapter(mAdapter); 
    } 
} 

おかげで、よあなたの答え

+1

だけ迅速なフォロー、あなたはスクロールしてみてくださいましたか? item_layout "match_parent"を選択した場合、recyclerviewでアイテムを1つしか見ることができませんが、スクロールすると他のアイテムを見つけることができます –

+0

ur xmlファイルを入れてください –

+0

'crimeLab.getCrimes()'が複数のアイテム? –

答えて

0

感謝。確かに私の間違いは、recyclerView属性android:layout_heightでした。

私は本が何らかの形でミスを犯したwrap_content

0

の代わりにmatch_parentを置きます。 enter image description here

実際の入力がアンドロイドする必要があります:layout_height = "wrap_content"

関連する問題