首先要导入RecycleView的库:
在Build.gradle文件中添加代码然后编译。
implementation 'com.android.support:recyclerview-v7:26.1.0'
然后开始布局
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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="com.example.zhanhaoxuan.recycleview_demo.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recycle_view" android:layout_width="match_parent" android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>e </android.support.constraint.ConstraintLayout>
在MainActivity文件中
public class MainActivity extends AppCompatActivity { private RecyclerView recycle_view; private ArrayList<String> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 recycle_view = findViewById(R.id.recycle_view); //初始化 initData(); //3.设置布局管理器 线性布局管理器 // LinearLayoutManager manager=new LinearLayoutManager(this); // manager.setOrientation(LinearLayoutManager.HORIZONTAL);//设置方向:纵向 // recyclerView.setLayoutManager(manager); //网格布局管理器 GridLayoutManager manager=new GridLayoutManager(this,3); manager.setOrientation(GridLayoutManager.VERTICAL); recycle_view.setLayoutManager(manager); //创建适配器 Myadapter adapter=new Myadapter(list,this); recycle_view.setAdapter(adapter); } private void initData() { list = new ArrayList<>(); list.add("推荐"); list.add("视频"); list.add("娱乐"); list.add("新闻"); list.add("社会"); list.add("科技"); list.add("军事"); list.add("英语"); list.add("音乐"); list.add("天气"); list.add("OK"); } }然后是创建适配器
首先Myadapter 继承的是RecyclerView.Adapter 然后不要去实现方法,直接创建一个ViewHolder类继承自RecyclerView.ViewHolder再添加有参构造,再构造方法中找控件。然后实现三个方法即可。
public class Myadapter extends RecyclerView.Adapter<Myadapter.ViewHolder> { private ArrayList<String> list; private Context context; public Myadapter(ArrayList<String> list, Context context) { this.list = list; this.context = context; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //引入布局 View view=View.inflate(context,R.layout.item_layout,null); ViewHolder holder=new ViewHolder(view); return holder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.tv.setText(list.get(position)); } @Override public int getItemCount() { return list.size(); } class ViewHolder extends RecyclerView.ViewHolder{ private final TextView tv; public ViewHolder(View itemView) { super(itemView); tv = itemView.findViewById(R.id.tv); } } }
item的XML文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="70dp" android:id="@+id/tv" android:layout_height="30dp" android:layout_margin="10dp" android:gravity="center" android:background="#ccc" /> </RelativeLayo