因为RecyclerView控件在v7包下:
首先、要添加v7包下RecyclerView的依赖:
做好准备工作后,开始正式进入RecyclerView的用法。
1、activity_main下的布局文件中已经可以引用到RecyclerView控件了。并且准备好列表中itemView的布局。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/retest_rv">
</android.support.v7.widget.RecyclerView>
</FrameLayout>
</LinearLayout>
<?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/test"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="HELLO" />
</LinearLayout>
2、准备RecyclerView的适配器
package cn.houyongkang.edu.henu.testcontactrecord;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
/**
* Created by houyongkang on 2019/3/28 0028.
*/
public class RecentAdapter extends RecyclerView.Adapter <RecentAdapter.InnerViewHolder>{
@NonNull
@Override
public InnerViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_view,viewGroup,false);
InnerViewHolder innerViewHolder = new InnerViewHolder(view);
return innerViewHolder;
}
@Override
public void onBindViewHolder(@NonNull InnerViewHolder innerViewHolder, int i) {
innerViewHolder.mTest.setText("更改后的hello!");
}
@Override
public int getItemCount() {
return 2;
}
public class InnerViewHolder extends RecyclerView.ViewHolder {
private final TextView mTest;
public InnerViewHolder(@NonNull View itemView) {
super(itemView);
mTest = itemView.findViewById(R.id.test);
}
}
}
这里要介绍一下RecyclerView.Adapter要实现的三个方法:onCreateViewHolder(),onBindViewHolder(),getItemCount()3个方法。其中getItemCount()方法比较简单,即返回列表中列表项的项数。另外几个如下:第一、onCreateViewHolder()方法用于创建ViewHolder实例,用于返回一个viewHolder实例。第二、再就是在继承自RecyclerView.ViewHolder的InnerViewHolder内部类中找到itemView中所包含的控件。第三、最后在onBindViewHolder()中对InnerViewHolder类中找到的控件进行操作。
3、MainActivity中可以对RecyclerView进行适配器的设置
package cn.houyongkang.edu.henu.testcontactrecord;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
public class MainActivity extends AppCompatActivity {
private RecyclerView mRv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
* 回忆RecyclerView的用法
*/
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mRv = this.findViewById(R.id.retest_rv);
//1、设置RecyclerView的布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
mRv.setLayoutManager(linearLayoutManager);
//2、设置RecyclerView的适配器
RecentAdapter recentAdapter = new RecentAdapter();
mRv.setAdapter(recentAdapter);
}
}