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