1.先在build.gdrdle(module)先添加依赖
implementation 'androidx.recyclerview:recyclerview:1.0.0'
2.在我们mainActivity.xml下添加以下代码,这样就把我们的RecyclerView成功添加引入到mainActivity.xml下
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
3.创建一个person类
public class Person {
private String name;
private String age;
private String sex;
public Person(String name, String age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
4.创建一个person_item.xml布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_marginTop="10dp"
android:id="@+id/person_name"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
<TextView
android:layout_marginTop="10dp"
android:id="@+id/person_age"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
<TextView
android:layout_marginTop="10dp"
android:id="@+id/person_sex"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
</LinearLayout>
5.为RecyclerView准备一个适配器,新建一个PersonAdapter类,让这个适配器继承RexyclerView.Adapter,并将泛型指定为PersonAdapter.ViewHolder,其中ViewHolder是我们PersonAdapter中定义的一个内部类。
public class PersonAdapter extends RecyclerView.Adapter<PersonAdapter.ViewHolder> {
private List<Person> mPerson;//创建一个list集合
static class ViewHolder extends RecyclerView.ViewHolder{
TextView name,age,sex;
public ViewHolder(@NonNull View view) {
super(view);
//在这里将我们person_item.xml里面的布局进行绑定
name=view.findViewById(R.id.person_name);
age=view.findViewById(R.id.person_age);
sex=view.findViewById(R.id.person_sex);
}
}
public PersonAdapter() {
}
public PersonAdapter(List<Person> mPerson) {
this.mPerson = mPerson;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).
inflate(R.layout.activity_person_item, parent, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Person person = mPerson.get(position);
holder.name.setText(person.getName());
holder.age.setText(person.getAge());
holder.sex.setText(person.getSex());
}
@Override
public int getItemCount() {
return mPerson.size();
}
}
6.接着编写我们的mainactivity
public class MainActivity extends AppCompatActivity {
private List<Person> personList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initPerson();
//绑定我们的布局 <android.support.v7.widget.RecyclerView
RecyclerView recyclerView = findViewById(R.id.recycler_view);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);//设置布局.vertical,也可以在这里设置horizontal
recyclerView.setLayoutManager(linearLayoutManager);
PersonAdapter adapter = new PersonAdapter(personList);
recyclerView.setAdapter(adapter);
}
//这里我们就随便做一个循环让他们显示出来
private void initPerson() {
for (int i=0;i<50;i++) {
Person person = new Person("name" + i, "age" + i, "sex");
personList.add(person);
}
}
}
7.那么最后就是运行一下了
扩展:RecyclerView的点击事件
在我们view Holder这个内部类进行修改
static class ViewHolder extends RecyclerView.ViewHolder{
TextView name,age,sex;
View personView;
public ViewHolder(@NonNull View view) {
super(view);
personView=view;
//在这里将我们person_item.xml里面的布局进行绑定
name=view.findViewById(R.id.person_name);
age=view.findViewById(R.id.person_age);
sex=view.findViewById(R.id.person_sex);
}
}
在onBindViewHolder方法里面添加代码进行监听事件
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Person person = mPerson.get(position);
holder.name.setText(person.getName());
holder.age.setText(person.getAge());
holder.sex.setText(person.getSex());
holder.name.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(), "我点击的是"+person.getName(), Toast.LENGTH_SHORT).show();
}
});
holder.age.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(), "我点击的是"+person.getAge(), Toast.LENGTH_SHORT).show();
}
});
holder.sex.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(), "我点击的是"+person.getSex(), Toast.LENGTH_SHORT).show();
}
});
}