1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="match_parent" 3 android:layout_height="wrap_content" 4 android:background="@android:color/holo_blue_light"> 5 6 <ImageView 7 android:id="@+id/iv" 8 android:layout_width="match_parent" 9 android:layout_height="wrap_content" 10 android:gravity="center" 11 android:padding="10dp" 12 android:src="@mipmap/ic_launcher" 13 android:scaleType="fitXY" 14 android:adjustViewBounds="true"/> 15 16 </LinearLayout>
導入RecyclerView包java
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:id="@+id/activity_main" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent"> 5 6 <android.support.v7.widget.RecyclerView 7 android:id="@+id/recyclerview" 8 android:layout_width="match_parent" 9 android:layout_height="match_parent"> 10 11 </android.support.v7.widget.RecyclerView> 12 </RelativeLayout>
1 public class MainActivity extends AppCompatActivity { 2 3 RecyclerView mRecycleView; 4 List<Image> mList = new ArrayList<>(); 5 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity_main); 10 11 mRecycleView = (RecyclerView) findViewById(R.id.recyclerview); 12 //初始化數據 13 initData(); 14 //設置適配器 15 mRecycleView.setAdapter(new MyAdapter()); 16 //設置佈局管理器 17 //mRecycleView.setLayoutManager(new LinearLayoutManager(this));//與ListView相似 18 mRecycleView.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL)); 19 //設置item分割線 20 21 //設置item動畫 22 } 23 24 25 private void initData() { 26 for (int i = 1; i <= 20; i++) { 27 try { 28 29 mList.add(new Image(R.mipmap.class.getField("img0"+i).getInt(null))); 30 31 } catch (IllegalAccessException e) { 32 e.printStackTrace(); 33 } catch (NoSuchFieldException e) { 34 e.printStackTrace(); 35 } 36 } 37 38 39 } 40 41 42 //佈局的內容組件 43 class MyViewHolder extends RecyclerView.ViewHolder{ 44 45 ImageView iv; 46 47 public MyViewHolder(View itemView) { 48 super(itemView); 49 iv = (ImageView) itemView.findViewById(R.id.iv); 50 } 51 } 52 53 //適配器,繼承RecyclerView.Adapter,泛型,裏面必須是Recycler.ViewHolder的子類 54 class MyAdapter extends RecyclerView.Adapter<MyViewHolder>{ 55 56 /** 57 * 一個頁面沒有加載完畢,會持續調用該方法。 58 * @param parent 59 * @param viewType 60 * @return 61 */ 62 @Override 63 public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 64 //建立ViewHolder 65 //導入佈局 66 View layout = View.inflate(getBaseContext(),R.layout.item_layout,null); 67 MyViewHolder viewHolder = new MyViewHolder(layout); 68 return viewHolder; 69 } 70 71 @Override 72 public void onBindViewHolder(MyViewHolder holder, int position) { 73 //爲每個佈局設置屬性。 74 //holder 組件 75 //當前第幾項, mList.get(position)拿到數據,給holder設置 76 77 holder.iv.setImageResource(mList.get(position).imgId); 78 } 79 80 @Override 81 public int getItemCount() { 82 return mList.size(); 83 } 84 } 85 86 class Image{ 87 int imgId; 88 public Image(int imgId){ 89 this.imgId = imgId; 90 } 91 } 92 }