RecyclerView的簡單使用

</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">


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章