1,user模型
package com.example.test10;
public class User {
private String name;
private Integer age;
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
2,MyAdapter.java
package com.example.test10;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
//数据源
private List<User> allUsers;
public MyAdapter(List<User> allUsers) {
this.allUsers = allUsers;
}
/**
* 创建RecyclerView,通过MyViewHolder
* @param parent
* @param viewType
* @return
*/
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cell,parent,false);
return new MyViewHolder(view);
}
/**
* 通过通过MyViewHolder来显示数据
*
* @param holder
* @param position
*/
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
User user = allUsers.get(position);
holder.textViewNumber.setText(String.valueOf(position));
holder.textViewName.setText(user.getName());
holder.textViewAge.setText(String.valueOf(user.getAge()));
}
@Override
public int getItemCount() {
return allUsers.size();
}
/**
* 创建ViewHolder类,用来缓存item中的子控件,避免不必要的findViewById
*/
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView textViewNumber, textViewName, textViewAge;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
textViewNumber = itemView.findViewById(R.id.texeView_number);
textViewName = itemView.findViewById(R.id.textView_name);
textViewAge = itemView.findViewById(R.id.textView_age);
}
}
}
3,初始化RV
/**
* 在onStart中使用,不然找不到
*/
@Override
public void onStart() {
super.onStart();
initRV();
}
private void initRV() {
List<User> list = new ArrayList<>();
for (int i = 0; i <= 10; i++) {
@SuppressLint("DefaultLocale") User user = new User(String.format("name:%d", i), i + 10);
list.add(user);
}
MyAdapter myAdapter = new MyAdapter(list);
recyclerView.setAdapter(myAdapter);
//使用垂直布局来实现
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
}