RecyclerView实现滚动效果-Android
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( { 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;
-
}
-
-
-
-
public ViewHolder onCreateViewHolder(int viewType) { ViewGroup parent,
-
View view = LayoutInflater.from(parent.getContext()).
-
inflate(R.layout.activity_person_item, parent, false);
-
ViewHolder holder = new ViewHolder(view);
-
return holder;
-
}
-
-
-
public void onBindViewHolder(int position) { ViewHolder holder,
-
Person person = mPerson.get(position);
-
holder.name.setText(person.getName());
-
holder.age.setText(person.getAge());
-
holder.sex.setText(person.getSex());
-
}
-
-
-
-
public int getItemCount() {
-
return mPerson.size();
-
}
-
}
6.接着编写我们的mainactivity
-
public class MainActivity extends AppCompatActivity {
-
-
private List<Person> personList = new ArrayList<>();
-
-
-
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( { 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方法里面添加代码进行监听事件
-
-
public void onBindViewHolder(int position) { ViewHolder holder,
-
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() {
-
-
public void onClick(View view) {
-
Toast.makeText(view.getContext(), "我点击的是" person.getName(), Toast.LENGTH_SHORT).show();
-
}
-
});
-
holder.age.setOnClickListener(new View.OnClickListener() {
-
-
public void onClick(View view) {
-
Toast.makeText(view.getContext(), "我点击的是" person.getAge(), Toast.LENGTH_SHORT).show();
-
}
-
});
-
holder.sex.setOnClickListener(new View.OnClickListener() {
-
-
public void onClick(View view) {
-
Toast.makeText(view.getContext(), "我点击的是" person.getSex(), Toast.LENGTH_SHORT).show();
-
}
-
});
-
-
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgkjcaj
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13