文件:ReViewActivity.zip
一、导入RecyclerView依赖包
1.加入该包的名称,然后将sdk版本改成对应包的版本号,然后点击右上角的更新:
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
2.在activity_main中添加布局:
3.新建一个item_recycler_view.xml,为RecyclerView内的元素设定xml样式:
4.创建一个适配器的类RecyclerViewAdapterDemo:
(1)创建适配器类继承自RecyclerView.Adapter,泛型传入RecyclerView.ViewHolder类
(2)创建内部类的子类MyViewHolder,初始化控件
(3)重写RecyclerView.Adapter类的相关方法
5.在MainActivity中获取对象:
6.初始化数据:
7.适配器实例化:
8.设置LayoutManager(布局格式):
9.设置Adapter,把适配器的数据传入recyclerView:
二、代码整合:
1.activity_main的xml布局格式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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_demo"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
2.item_recycler_view.xml的布局内容代码:
<?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:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv_test"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="测试"
android:textSize="20sp"
android:layout_marginRight="2dp"
android:layout_marginLeft="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:textColor="#E2583F"
android:background="#7DAF45" />
</LinearLayout>
3.RecyclerViewAdapterDemo的适配器代码:
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
// 1.创建适配器类继承自RecyclerView.Adapter,泛型传入RecyclerView.ViewHolder类
public class RecyclerViewAdapterDemo extends RecyclerView.Adapter
<RecyclerViewAdapterDemo.MyViewHolder> {
private Context context;
private List<String> list;
private View inflater;
public RecyclerViewAdapterDemo(Context context,List<String> list){
this.context=context;
this.list=list;
}
//3.重写RecyclerView.Adapter类的相关方法
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
inflater= LayoutInflater.from(context).inflate(R.layout.item_recycler_view,parent,false);
MyViewHolder viewHolder=new MyViewHolder(inflater);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.tv_view.setText(list.get(position));
}
@Override
public int getItemCount() {
return list.size();
}
// 2.创建内部类即RecyclerView.ViewHolder类的子类MyViewHolder,并初始化item的控件。
class MyViewHolder extends RecyclerView.ViewHolder{
private TextView tv_view;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
tv_view=itemView.findViewById(R.id.tv_view);
}
}
}
4.MainActivity的代码:
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Context;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
// 1.获取RecyclerView对象
private RecyclerView recyclerView;
private RecyclerViewAdapterDemo adapterDemo;
private Context context;
private List<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context=this;
// 2.初始化数据
recyclerView=findViewById(R.id.rv_demo);
//3.适配器实例化
list=new ArrayList<>();
for (int i=0;i<10;i++){
list.add("这是第"+i+"个测试");
}
adapterDemo=new RecyclerViewAdapterDemo(context,list);
// 4.设置LayoutManager
// GridLayoutManager manager=new GridLayoutManager(context,3);
// manager.setOrientation(GridLayoutManager.VERTICAL);
LinearLayoutManager manager=new LinearLayoutManager(context);
manager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(manager);
// 5. 设置Adapter
recyclerView.setAdapter(adapterDemo);
}
}
5.结果图:
6.设置LayoutManager不同,布局样式不同(ps:这个是GridManager的布局格式):
三、RecyclerView的另外一些使用
mRecyclerView = findView(R.id.id_recyclerview);
//设置布局管理器
mRecyclerView.setLayoutManager(layout);
//设置adapter
mRecyclerView.setAdapter(adapter);
//设置Item增加、移除动画
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
//添加分割线
mRecyclerView.addItemDecoration(new DividerItemDecoration(
getActivity(), DividerItemDecoration.HORIZONTAL_LIST));