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