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);
             }
         }
     }
}

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值