</pre><pre name="code" class="java">
</pre><pre name="code" class="java"><pre style="font-family: Consolas; font-size: 13.5pt; background-color: rgb(255, 255, 255);">compile <span style="color:#008000;"><strong>'com.android.support:recyclerview-v7:23.1.1'</strong></span>
package com.example.administrator.app2;
import android.graphics.Color;
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.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**
* RecyclerView 是Android 版本中新添加的一個用來取代ListView、GridView的SDK,
* 高度的解耦,異常的靈活,通過設置它提供的不同LayoutManager,
* ItemDecoration , ItemAnimator實現不同的效果。
*/
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private List<YYY> yyys;
private List<String> mnks;
private static final int COUNT = 100;
private int[] image1_id = {R.mipmap.aa1, R.mipmap.aa2, R.mipmap.aa22, R.mipmap.aa3, R.mipmap.aa33,
R.mipmap.aa4, R.mipmap.aa44, R.mipmap.aa5, R.mipmap.aa55, R.mipmap.aaaa};
private int[] image2_id = {R.mipmap.bb1, R.mipmap.bb10, R.mipmap.bb11, R.mipmap.bb12, R.mipmap.bb13,
R.mipmap.bb14, R.mipmap.bb15, R.mipmap.bb16, R.mipmap.bb17, R.mipmap.bb18, R.mipmap.bb2jpg, R.mipmap.bb3,
R.mipmap.bb4, R.mipmap.bb5, R.mipmap.bb6, R.mipmap.bb7, R.mipmap.bb8, R.mipmap.bb9,};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
initData();
//設置佈局管理器(線性佈局效果)
//參數1:上下文 參數2:線性佈局的方向 參數3:是否反轉(從下到上,倒過來顯示)
//recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,true));
//網格佈局效果 參數2:每一行顯示的View對象數量(View對象的寬和高都不能設置)
//recyclerView.setLayoutManager(new GridLayoutManager(this, 4));
//瀑布流效果 參數1:每一行顯示多少佈局(View對象)
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL));
recyclerView.setAdapter(new DemoAdapter());
}
private void initData() {
if (yyys == null || yyys.size() == 0) {
yyys = new ArrayList<YYY>();
}
for (int i = 0; i < COUNT; i++) {
yyys.add(new YYY((i + 21), "楊鈺瑩" + (i + 1) + "號 "));
}
}
//RecyclerView的適配器(泛型,RecyclerView打包類的子類)
class DemoAdapter extends RecyclerView.Adapter<ViewHolder> {
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//把一個佈局轉化成一個View對象的時候 不會把佈局最頂層的控件的參數賦值給當前View
//View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.itme1, null);
//把一個佈局轉化成一個View對象的時候 會把佈局最頂層的佈局控件的參數複製給當前View(在界面顯示效果)
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.itme1, parent, false);
return new ViewHolder(view);//返回控件打包類的對象(把當前創建的View對象傳過去)
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.itme1_name.setText(yyys.get(position).name);
holder.itme1_age.setText(yyys.get(position).age + "");
//LayoutParams相當於一個Layout的信息包,它封裝了Layout的位置、高、寬等信息。
//LayoutParams繼承於Android.View.ViewGroup.LayoutParams
//網格效果,寬和高都不能設置,否則報錯
// ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams();
//layoutParams.height = 180;
//layoutParams.width = 30;
//holder.itemView.setLayoutParams(layoutParams);//獲得佈局對象,設置
/* if (position % 4 == 0) {
holder.itemView.setBackgroundColor(Color.RED);
} else if(position%4==3){
holder.itemView.setBackgroundColor(Color.YELLOW);
}else if(position%4==2){
holder.itemView.setBackgroundColor(Color.BLUE);
}else if(position%4==1){
holder.itemView.setBackgroundColor(Color.GREEN);
}*/
if (position % 2 == 0) {//設置瀑布流的效果
//設置View的高度和背景顏色
ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams();
layoutParams.height = 80;
//layoutParams.width=120; 設置寬度無效
holder.itemView.setLayoutParams(layoutParams);
holder.itemView.setBackgroundColor(Color.RED);
} else {
ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams();
layoutParams.height = 120;
//layoutParams.width=30;
holder.itemView.setLayoutParams(layoutParams);
holder.itemView.setBackgroundColor(Color.BLUE);
}
}
@Override
public int getItemCount() {
return yyys.size();
}
}
//繼承RecyclerView的控件打包類
class ViewHolder extends RecyclerView.ViewHolder {
public TextView itme1_name, itme1_age;
public ViewHolder(View itemView) {
super(itemView);
//找出控件
itme1_name = (TextView) itemView.findViewById(R.id.itme1_name);
itme1_age = (TextView) itemView.findViewById(R.id.itme1_age);
}
}
}
</pre><pre name="code" class="java">