RecyclerView是用于在有限的窗口展现大量数据的控件
主要步骤如下:
1.添加依赖:输入recyclerview找到这个版本com.android.support:recyclerview-v7:28.0.0添加;
2.布局文件中创建RecyclerView控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/namerv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
3.新建布局文件item.xml,右键layout文件明New-Layout resource file,确定
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fontll"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="100dp">
<TextView
android:id="@+id/namestv"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<TextView
android:id="@+id/xingstv"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>
4.创建布局缓存器MyViewHolder
Superclass继承:输入ViewHolder选择带RecyclerView的选项,即:android.support.v7.widget.RecyclerView.ViewHolder
1)完成之后类文件是空值,
package com.lxm.recycleeview;
import android.support.v7.widget.RecyclerView;
public class MyViewHolder extends RecyclerView.ViewHolder {
}
2)选中ViewHolder点击Alt+回车,即可生成以下代码,
package com.lxm.recycleeview;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
public class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder(@NonNull View itemView) {
super(itemView);
}
}
3)关联item.xml页面
package com.lxm.recycleeview;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView namestv,xingstv;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
namestv=itemView.findViewById(R.id.namestv);
xingstv=itemView.findViewById(R.id.xingstv);
}
}
5.创建适配器文件MyAdapter
Superclass继承:输入Adapter选择带RecyclerView的选项,即:android.support.v7.widget.RecyclerView.Adapter
完成之后类文件是空值,
package com.lxm.recycleeview;
import android.support.v7.widget.RecyclerView;
public class MyAdater extends RecyclerView.Adapter {
}
在Adapter后面加上<MyViewHolder> ,并选中MyViewHolder点击Alt+回车,即可生成以下代码:
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;
public class MyAdater extends RecyclerView.Adapter<MyViewHolder>{
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
return null;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
}
@Override
public int getItemCount() {
return 0;
}
}
1)创建布局缓存器;2)布局缓存器与数据匹配;3)获取总条目数
package com.lxm.recycleeview;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;
public class MyAdater extends RecyclerView.Adapter<MyViewHolder> {
List<String> names,xings;
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
//1)创建布局缓存器
View itemView= LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item,viewGroup,false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
//2)布局缓存器与数据匹配
myViewHolder.namestv.setText(xings.get(i));
myViewHolder.xingstv.setText(names.get(i));
}
@Override
public int getItemCount() {
//3)获取总条目数
return names.size();
}
}
6.MainActivity.java文件
1)造一个布局管理器LinerLayoutManger,设置布局管理器方向,设置清单文件的布局管理器;
2)造一个自己的清单控件适配器,清单文件绑定数据,设置清单文件的适配器;
package com.lxm.recycleeview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView=findViewById(R.id.namerv);
/*
第一步,造一个布局管理器LinearLayoutManager,设置布局管理器的方向,设置清单控件的布局管理器。
*/
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(llm);
/*
第二步,造一个自己设定的清单控件适配器,给清单控件适配器绑定数据,设置清单控件的适配器。
*/
MyAdater myAdater = new MyAdater();
List<String> mings = new ArrayList<String>();
mings.add("小明01");
mings.add("小明02");
mings.add("小明03");
mings.add("小明04");
mings.add("小明05");
mings.add("小明06");
mings.add("小明07");
mings.add("小明08");
mings.add("小明09");
mings.add("小明10");
List<String> xings = new ArrayList<String>();
xings.add("李01");
xings.add("李02");
xings.add("李03");
xings.add("李04");
xings.add("李05");
xings.add("李06");
xings.add("李07");
xings.add("李08");
xings.add("李09");
xings.add("李10");
myAdater.names=mings;
myAdater.xings=xings;
recyclerView.setAdapter(myAdater);
}
}