第一步,在module的build.gradle中
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.lx"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '28.0.0'
}
}
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.jcodecraeer:xrecyclerview:1.5.9'
}
第二步,布局文件 Activity_main.xml
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/recyview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.jcodecraeer.xrecyclerview.XRecyclerView>
第三步,MainActivity中
public class MainActivity extends AppCompatActivity {
private XRecyclerView recyview;
private List<String> data;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyview = findViewById(R.id.recyview);
//初始化数据源
data = new ArrayList<>();
for(int i=0;i<50;i++)
{
data.add("zjq智障"+i);
}
//设置适配器
adapter = new MyAdapter(MainActivity.this, data);
recyview.setAdapter(adapter);
LinearLayoutManager linearLayoutManager=new LinearLayoutManager(MainActivity.this);
recyview.setLayoutManager(linearLayoutManager);
//写监听
recyview.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
//先清空data
data.clear();
for(int i=0;i<50;i++)
{
data.add("zjq"+i);
}
//停止刷新
recyview.refreshComplete();
//刷新适配器
adapter.notifyDataSetChanged();
}
//下拉刷新
@Override
public void onLoadMore() {
for(int i=0;i<20;i++)
{
data.add("哈哈哈"+i);
}
//停止刷新
recyview.refreshComplete();
}
});
}
}
第四步,适配器
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private Context context;
private List<String> data;
public MyAdapter(Context context, List<String> data) {
this.context = context;
this.data = data;
}
@NonNull
@Override
public MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=View.inflate(context,R.layout.item,null);
ViewHolder holder=new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyAdapter.ViewHolder viewHolder, int i) {
viewHolder.tv.setText(data.get(i));
}
@Override
public int getItemCount() {
return data.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
private final TextView tv;
public ViewHolder(@NonNull View itemView) {
super(itemView);
tv = itemView.findViewById(R.id.tv);
}
}
}