RecyclerView

Android第八天記

recyclerView

recyclerView的使用:
1、添加依賴在APP–>dependencies裏添加
這裏寫圖片描述
2、在主佈局文件中添加一個recyclerView

<android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v7.widget.RecyclerView>

3、創建一個新的佈局文件,用於給每一個Item佈局
4、聲明屬性並與佈局文件中的控件進行綁定

1、//聲明recyclerView對象
2、//聲明一個數據集合

5、設置佈局管理器格式
//*使用線性佈局管理器——傳上下文
recyclerView.setLayoutManager(new LinearLayoutManager(this));

//*使用表格佈局管理器——上下文和行數
recyclerView.setLayoutManager(new GridLayoutManager(this,3));
//*使用瀑布流佈局管理器——行數和瀑布流的樣式
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL));

6、創建MyAdapter適配器
創建一個內部類MyAdapter適配器必須繼承RecyclerView.Adapter< MyAdapter.MyViewHolder >
會生成三個方法:
onCreateViewHolder(ViewGroup parent,int viewType)—拿到item佈局文件,根據佈局文件,創建viewHolder。
onBindViewHolder(MyViewHolder holder,int position)—從數據列表中獲取到數據
getItemCount()—–返回數據的個數

class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{

        //當需要拿到viewholder的時候就會調用,返回值與之前給的泛型相同,
        // 在加載不同類型的佈局的時候,可以根據viewType來創建不同的viewHolder
        //viewType是Item的視圖類型
        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            //這裏是拿到佈局文件
//            View view= LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item,null);
            View view= LayoutInflater.from(MainActivity.this).inflate(R.layout.simple_layout,null);
            //根據佈局文件創建一個ViewHolder
            MyViewHolder viewHolder=new MyViewHolder(view);
            return viewHolder;
        }

        //當內容和佈局進行綁定的時候回調這個方法,每當有新數據進行屏幕的時候,也會回調這個方法
        //參數holder和ViewHolder類型與泛型所規定的類型相同,參數position代表的是該item的位置
        //可以通過position來獲取對應的數據
        @Override
        public void onBindViewHolder(MyViewHolder holder, int position) {
            //從數據列表中獲取到數據
            String text=mList.get(position).get("text").toString();
            //將數據設置到界面上
            holder.textView.setText(text);
            holder.textView.setTextColor(Color.BLUE);

            Integer image= (Integer) mList.get(position).get("image");
            holder.image.setImageResource(image);

        }

        /**
         * 返回數據的個數
         * @return
         */
        @Override
        public int getItemCount() {
            return mList.size();
        }

7、創建viewHolder
創建一個內部類,讓它繼承RecyclerView.ViewHolder,然後生成其構造方法,
然後再聲明item裏的控件,並與viewHolder進行關聯, 參數的itemView就是每一個item
的佈局

 class MyViewHolder extends RecyclerView.ViewHolder {
       TextView textView;
       ImageView image;
       public MyViewHolder(View itemView) {
             super(itemView);
            //進行控件關聯
    textView = (TextView) itemView.findViewById(R.id.simple_tv);
     image= (ImageView)itemView.findViewById(R.id.simple_image);
            }
        }

以下這兩步是在onCreate裏寫!
6、創建適配器
MyAdapter adapter=new MyAdapter();
7、綁定適配器
recyclerView。setAdapter(adapter);
8、產生數據–>創建createData的方法把數據傳到List裏!
createData();

private void createData() {
        mList=new ArrayList<>();
        for(int i=0;i<20;i++){
            Map map=new HashMap();
            map.put("text","南海是中國的"+i);
            map.put("image",R.drawable.d1+i);
            mList.add(map);
        }
    }
發佈了31 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章