1.先在build.gdrdle(module)先添加依赖
implementation 'androidx.recyclerview:recyclerview:1.0.0'
2.在我们mainActivity.xml下添加以下代码,这样就把我们的RecyclerView成功添加引入到mainActivity.xml下
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布局
5.为RecyclerView准备一个适配器,新建一个PersonAdapter类,让这个适配器继承RexyclerView.Adapter,并将泛型指定为PersonAdapter.ViewHolder,其中ViewHolder是我们PersonAdapter中定义的一个内部类。
public class PersonAdapter extends RecyclerView.Adapter{ private List 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 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 ListpersonList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initPerson(); //绑定我们的布局
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(); } }); }