• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

RecyclerView实现滚动效果-Android

武飞扬头像
灰太狼@
帮助1


1.先在build.gdrdle(module)先添加依赖

implementation 'androidx.recyclerview:recyclerview:1.0.0'

2.在我们mainActivity.xml下添加以下代码,这样就把我们的RecyclerView成功添加引入到mainActivity.xml下

  1.  
    <androidx.recyclerview.widget.RecyclerView
  2.  
    android:id="@ id/recycler_view"
  3.  
    android:layout_width="match_parent"
  4.  
    android:layout_height="match_parent" />

学新通

 3.创建一个person类

  1.  
    public class Person {
  2.  
     
  3.  
    private String name;
  4.  
    private String age;
  5.  
    private String sex;
  6.  
     
  7.  
    public Person(String name, String age, String sex) {
  8.  
    this.name = name;
  9.  
    this.age = age;
  10.  
    this.sex = sex;
  11.  
    }
  12.  
     
  13.  
    public String getName() {
  14.  
    return name;
  15.  
    }
  16.  
     
  17.  
    public void setName(String name) {
  18.  
    this.name = name;
  19.  
    }
  20.  
     
  21.  
    public String getAge() {
  22.  
    return age;
  23.  
    }
  24.  
     
  25.  
    public void setAge(String age) {
  26.  
    this.age = age;
  27.  
    }
  28.  
     
  29.  
    public String getSex() {
  30.  
    return sex;
  31.  
    }
  32.  
     
  33.  
    public void setSex(String sex) {
  34.  
    this.sex = sex;
  35.  
    }
  36.  
    }

4.创建一个person_item.xml布局

  1.  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.  
    android:orientation="horizontal"
  3.  
    android:layout_width="match_parent"
  4.  
    android:layout_height="wrap_content">
  5.  
     
  6.  
     
  7.  
    <TextView
  8.  
    android:layout_marginTop="10dp"
  9.  
    android:id="@ id/person_name"
  10.  
    android:layout_weight="1"
  11.  
    android:layout_width="0dp"
  12.  
    android:layout_height="wrap_content"/>
  13.  
     
  14.  
    <TextView
  15.  
    android:layout_marginTop="10dp"
  16.  
    android:id="@ id/person_age"
  17.  
    android:layout_weight="1"
  18.  
    android:layout_width="0dp"
  19.  
    android:layout_height="wrap_content"/>
  20.  
     
  21.  
    <TextView
  22.  
    android:layout_marginTop="10dp"
  23.  
    android:id="@ id/person_sex"
  24.  
    android:layout_weight="1"
  25.  
    android:layout_width="0dp"
  26.  
    android:layout_height="wrap_content"/>
  27.  
     
  28.  
    </LinearLayout>

5.为RecyclerView准备一个适配器,新建一个PersonAdapter类,让这个适配器继承RexyclerView.Adapter,并将泛型指定为PersonAdapter.ViewHolder,其中ViewHolder是我们PersonAdapter中定义的一个内部类。

  1.  
    public class PersonAdapter extends RecyclerView.Adapter<PersonAdapter.ViewHolder> {
  2.  
     
  3.  
    private List<Person> mPerson;//创建一个list集合
  4.  
     
  5.  
    static class ViewHolder extends RecyclerView.ViewHolder{
  6.  
     
  7.  
    TextView name,age,sex;
  8.  
     
  9.  
    public ViewHolder(@NonNull View view) {
  10.  
    super(view);
  11.  
    //在这里将我们person_item.xml里面的布局进行绑定
  12.  
    name=view.findViewById(R.id.person_name);
  13.  
    age=view.findViewById(R.id.person_age);
  14.  
    sex=view.findViewById(R.id.person_sex);
  15.  
    }
  16.  
    }
  17.  
     
  18.  
    public PersonAdapter() {
  19.  
    }
  20.  
     
  21.  
    public PersonAdapter(List<Person> mPerson) {
  22.  
    this.mPerson = mPerson;
  23.  
    }
  24.  
     
  25.  
    @NonNull
  26.  
    @Override
  27.  
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  28.  
    View view = LayoutInflater.from(parent.getContext()).
  29.  
    inflate(R.layout.activity_person_item, parent, false);
  30.  
    ViewHolder holder = new ViewHolder(view);
  31.  
    return holder;
  32.  
    }
  33.  
     
  34.  
    @Override
  35.  
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
  36.  
    Person person = mPerson.get(position);
  37.  
    holder.name.setText(person.getName());
  38.  
    holder.age.setText(person.getAge());
  39.  
    holder.sex.setText(person.getSex());
  40.  
    }
  41.  
     
  42.  
     
  43.  
    @Override
  44.  
    public int getItemCount() {
  45.  
    return mPerson.size();
  46.  
    }
  47.  
    }

6.接着编写我们的mainactivity

  1.  
    public class MainActivity extends AppCompatActivity {
  2.  
     
  3.  
    private List<Person> personList = new ArrayList<>();
  4.  
     
  5.  
    @Override
  6.  
    protected void onCreate(Bundle savedInstanceState) {
  7.  
    super.onCreate(savedInstanceState);
  8.  
    setContentView(R.layout.activity_main);
  9.  
     
  10.  
    initPerson();
  11.  
    //绑定我们的布局 <android.support.v7.widget.RecyclerView
  12.  
    RecyclerView recyclerView = findViewById(R.id.recycler_view);
  13.  
     
  14.  
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
  15.  
    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);//设置布局.vertical,也可以在这里设置horizontal
  16.  
    recyclerView.setLayoutManager(linearLayoutManager);
  17.  
     
  18.  
    PersonAdapter adapter = new PersonAdapter(personList);
  19.  
    recyclerView.setAdapter(adapter);
  20.  
     
  21.  
    }
  22.  
     
  23.  
    //这里我们就随便做一个循环让他们显示出来
  24.  
    private void initPerson() {
  25.  
    for (int i=0;i<50;i ) {
  26.  
    Person person = new Person("name" i, "age" i, "sex");
  27.  
    personList.add(person);
  28.  
    }
  29.  
    }
  30.  
    }

7.那么最后就是运行一下了

学新通

扩展:RecyclerView的点击事件

在我们view Holder这个内部类进行修改

  1.  
    static class ViewHolder extends RecyclerView.ViewHolder{
  2.  
     
  3.  
    TextView name,age,sex;
  4.  
     
  5.  
    View personView;
  6.  
     
  7.  
    public ViewHolder(@NonNull View view) {
  8.  
    super(view);
  9.  
    personView=view;
  10.  
    //在这里将我们person_item.xml里面的布局进行绑定
  11.  
    name=view.findViewById(R.id.person_name);
  12.  
    age=view.findViewById(R.id.person_age);
  13.  
    sex=view.findViewById(R.id.person_sex);
  14.  
    }
  15.  
    }

在onBindViewHolder方法里面添加代码进行监听事件

  1.  
    @Override
  2.  
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
  3.  
    Person person = mPerson.get(position);
  4.  
    holder.name.setText(person.getName());
  5.  
    holder.age.setText(person.getAge());
  6.  
    holder.sex.setText(person.getSex());
  7.  
     
  8.  
    holder.name.setOnClickListener(new View.OnClickListener() {
  9.  
    @Override
  10.  
    public void onClick(View view) {
  11.  
    Toast.makeText(view.getContext(), "我点击的是" person.getName(), Toast.LENGTH_SHORT).show();
  12.  
    }
  13.  
    });
  14.  
    holder.age.setOnClickListener(new View.OnClickListener() {
  15.  
    @Override
  16.  
    public void onClick(View view) {
  17.  
    Toast.makeText(view.getContext(), "我点击的是" person.getAge(), Toast.LENGTH_SHORT).show();
  18.  
    }
  19.  
    });
  20.  
    holder.sex.setOnClickListener(new View.OnClickListener() {
  21.  
    @Override
  22.  
    public void onClick(View view) {
  23.  
    Toast.makeText(view.getContext(), "我点击的是" person.getSex(), Toast.LENGTH_SHORT).show();
  24.  
    }
  25.  
    });
  26.  
     
  27.  
    }

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgkjcaj
系列文章
更多 icon
同类精品
更多 icon
继续加载