1.导入依赖
在app下的build.gradle中添加依赖
implementation 'com.android.support:recyclerview-v7:29.0.0'
我用的版本是29.0.0 请根据自己的版本来填写后面的版本号
2.创建RecyclerView每一个item的布局
这里就创建一个简单的只含有一个TextView的布局
item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25sp"
/>
</LinearLayout>
单项布局layout_height不能使用match_content,否则整个RecyclerView会只有一项
3.创建RecyclerView的adapter
package com.example.recycler_test_csdn;
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;
public class testAdapter extends RecyclerView.Adapter<testAdapter.ViewHolder> { //继承RecyclerView的Adapter
List<String> testString; //1.先创建传入数据的变量和构造函数
public testAdapter(List<String> stringList){
testString = stringList;
}
static class ViewHolder extends RecyclerView.ViewHolder{ //2.创建一个ViewHolder类,包含每一项的数据的布局名称
//然后通过Enter+Alt来生成接口函数
TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
}
}
@Override
public int getItemCount() { //3.传入的数据的size
return testString.size();
}
@NonNull
@Override //4.对传入的数据进行布局的导入,返回holder,holder就代表了布局
// 可以一个个取到布局中的每一个元素,比如holder.TextView
public testAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_test,parent,false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull testAdapter.ViewHolder holder, int position) { //5.得到一个项,然后通过holder来改变布局中各项的数据
String item = testString.get(position);
holder.textView.setText(item);
}
}
总的来说,一建构造函数来取数据,二建ViewHolder类来确定布局类型,三为ViewHolder引入布局,四获取数据为ViewHolder确定实例,五通过实例来改变布局中的数据
4.在活动中设置adapter和布局选择
package com.example.recycler_test_csdn;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
List<String> testString = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
recyclerView = findViewById(R.id.recycler_view);
testAdapter adapter = new testAdapter(testString);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
}
private void initData() {
testString.add("1");
testString.add("2");
testString.add("3");
testString.add("4");
testString.add("5");
testString.add("6");
testString.add("1");
testString.add("2");
testString.add("3");
testString.add("4");
testString.add("5");
testString.add("6");
}
}
最后的效果
5.拓展