Android中RecycleView的使用

MAinActivity的xml文件:
在這裏插入圖片描述

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/RecycleView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

在這裏插入圖片描述

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="wrap_content">
<!--我們的線性佈局recycleview-->
    <ImageView
        android:id="@+id/iv_num"
        android:background="@mipmap/xwen1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
<!--然後的話就是添加一個我們的背景-->
   <TextView
       android:id="@+id/id_num"
       android:text="我是智慧城市1"
       android:gravity="center"
       android:layout_width="match_parent"
       android:layout_height="match_parent"/>
</LinearLayout>

在這裏插入圖片描述

package com.example.recycleview;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
   
   

    private RecyclerView recyclerView;
    private ArrayList<Integer> data;
    private int[] img;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // TODO 第一步的話就是初始化數據
        initData();
        // todo 第二步:初始化數據後就找到我們的recycleview然後的話需要給它設置一個LayoutManager();
        recyclerView = (RecyclerView) findViewById(R.id.RecycleView);
        // todo 給它設置一個LayoutManager();
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        // todo 設置一個適配器
        recyclerView.setAdapter(new HomeAdapter());

    }

    // todo 第三步: 的話初始化數據將我們的initData先實現一下
    private void initData() {
   
   
        //創建一個我們的ArrayList然後的話將它轉換成一個成員變量
        data = new ArrayList<>();
        // 使用我們的for循環往我們的集合中填充我們的數據
        for (int i = 0; i < 7; i++) {
   
   
            // todo 將我們的數據添加進去
            data.add(i);
        }
        // 創建一個我們的int類型的數組然後的話將我們的圖片文件傳入進去
        img = new int[]{
   
   
                R.mipmap.home1, R.mipmap.home2, R.mipmap.home3, R.mipmap.home4, R.mipmap.cshi, R.mipmap.xweb,R.mipmap.xwen1
        };
    }
     // todo 第四步: 添加我們的適配器和我們的listview的方法類似
    class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>{
   
   


         // todo 第七步:  在這個位置我們要做的是將我們的xml文件轉換成我們的view對象
         @NonNull
         @Override
         public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
   
   
             MyViewHolder holder = new MyViewHolder(LayoutInflater.from(MainActivity.this).inflate(R.layout.item_home,parent,false));
             return holder;
         }
         // todo 第八步:處理的就是數據的綁定將它設置到我們的界面上
         @Override
         public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
   
   
            holder.tv.setText("這是第" + data.get(position).toString()+ "個數據");
            holder.iv.setImageResource(img[position]);
         }

         @Override
         public int getItemCount() {
   
   
             // todo 第九步: 就是返回的數目
             return data.size();
         }

         //在這個位置的話我們有一個viewhodle就是我們的一個泛型 TODO 第五步: 將我們的viewholder先創建出來
         class MyViewHolder extends RecyclerView.ViewHolder{
   
   
             // todo 第六步: 然後的話我們的viewholder有兩個我們的兩個方法一個是tetxview和imageview
             TextView tv;
             ImageView iv;
             public MyViewHolder(@NonNull View itemView) {
   
   
                 super(itemView);
                 tv = itemView.findViewById(R.id.id_num);
                 iv = itemView.findViewById(R.id.iv_num);
             }
         }
     }
}

在這裏插入圖片描述

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