1. 程式人生 > >Android RecyclerView之瀑布流顯示(四)

Android RecyclerView之瀑布流顯示(四)

package com.example.recyclerview_staggered;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import 
com.example.recyclerview_staggered.adapter.RecyclerViewStaggeredAdapter; import com.example.recyclerview_staggered.menu.DateBean; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerVIew; private int[] image = {R.drawable.cxy1, R.drawable.cxy8
, R.drawable.cxy7, R.drawable.cxy2, R.drawable.cxy4, R.drawable.cxy5, R.drawable.cxy3, R.drawable.cxy1, R.drawable.cxy6, R.drawable.cxy1, R.drawable.cxy8, R.drawable.cxy7, R.drawable.cxy2, R.drawable.cxy4, R.drawable.cxy5, R.drawable.cxy3, R.drawable.cxy1
, R.drawable.cxy6}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控制元件 mRecyclerVIew = (RecyclerView) findViewById(R.id.recyclerView); } //RecyclerView實現瀑布流的效果,實際上就是 private void loadStaggeredDate(Boolean inversion, Boolean orientation) { //集合物件 ArrayList<DateBean> dateBeanArrayList = new ArrayList<>(); //給Bean類放資料,把裝好資料的Bean類放到集合裡 for (int i = 0; i < image.length; i++) { //建立Bean類物件 DateBean dateBean = new DateBean(); //給benu類物件新增圖片和資訊 dateBean.icon = image[i]; dateBean.name = "RecyclerStaggered" + i; //把Bean類放入集合 dateBeanArrayList.add(dateBean); } //建立介面卡adapter物件 引數1.上下文 2.資料載入集合 RecyclerViewStaggeredAdapter recyclerViewStaggeredAdapter = new RecyclerViewStaggeredAdapter(this, dateBeanArrayList); //設定介面卡 mRecyclerVIew.setAdapter(recyclerViewStaggeredAdapter); //佈局管理器 StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, orientation ? StaggeredGridLayoutManager.VERTICAL : StaggeredGridLayoutManager.HORIZONTAL); staggeredGridLayoutManager.setReverseLayout(inversion); //設定佈局管理器 引數GridManager 可以使RecyclerView實現和GridView一樣的效果 mRecyclerVIew.setLayoutManager(staggeredGridLayoutManager); } /* *下面的程式碼和RecycleView沒有關係,是選單,方便RecycleView的展示 */ //載入選單佈局 @Override public boolean onCreateOptionsMenu(Menu menu) { //載入佈局使用選單特有方法,getMenuInflate物件 //引數1.選單顯示的佈局 2.固定Menu getMenuInflater().inflate(R.menu.menu_main, menu); return true; } //選單按鈕點選事件處理 @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); if (itemId == R.id.action_Staggered_noraml) { //標準顯示(垂直) loadStaggeredDate(false, true); Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show(); return true; }//Staggered垂直反向顯示 else if (itemId == R.id.action_Staggered_vertical_reverse) { loadStaggeredDate(true, true); }//Staggered水平顯示 else if (itemId == R.id.action_Staggered_horizontal) { loadStaggeredDate(false, false); }//Staggered水平反向 else if (itemId == R.id.action_Staggered_horizontal_reverse) { loadStaggeredDate(true, false); } return super.onOptionsItemSelected(item); } }