文件: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.RecyclerViewandroid: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"><TextViewandroid: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@Overridepublic 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;}@Overridepublic void onBindViewHolder(@NonNull MyViewHolder holder, int position) {holder.tv_view.setText(list.get(position));}@Overridepublic 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;@Overrideprotected 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. 设置AdapterrecyclerView.setAdapter(adapterDemo);}}
5.结果图:
6.设置LayoutManager不同,布局样式不同(ps:这个是GridManager的布局格式):
三、RecyclerView的另外一些使用
mRecyclerView = findView(R.id.id_recyclerview);//设置布局管理器mRecyclerView.setLayoutManager(layout);//设置adaptermRecyclerView.setAdapter(adapter);//设置Item增加、移除动画mRecyclerView.setItemAnimator(new DefaultItemAnimator());//添加分割线mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.HORIZONTAL_LIST));
