1.写好空布局的layout文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:gravity="center"
>
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:scaleType="fitStart"
android:src="@drawable/pic">
</ImageView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="暂时没有数据呢!"
android:textColor="@color/black">
</TextView>
</LinearLayout>
重写Adapter
public class MyAdapter extends RecyclerView.Adapter {
List<MyBean> items = new ArrayList<>();
Context context ;
//类型,用此来判断recyclerview该用哪个布局显示
public final int TYPE_EMPTY = 0;
public final int TYPE_NORMAL = 1;
//根据list来判断用哪个布局
@Override
public int getItemViewType(int position) {
if(items.size()<=0){
return TYPE_EMPTY;
}
return TYPE_NORMAL;
}
public MyAdapter(Context context, List<MyBean> items) {
this.items = items;
this.context = context;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view;
//若为空布局类型,则直接返回空的RecyclerView.ViewHolder
if(viewType == TYPE_EMPTY){
view = LayoutInflater.from(context).inflate(R.layout.view_empty_item,parent,false);
return new RecyclerView.ViewHolder(view){
};
}
else {
view = LayoutInflater.from(context).inflate(R.layout.view_rv_item, parent, false);
}
//否则返回自定义
return new MyHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
//先判断holder是否为自定义holder
if(holder instanceof MyHolder){
MyBean myItem = items.get(position);
((MyHolder)holder).titleTextView.setText(myItem.getTitle());
((MyHolder)holder).contentTextView.setText(myItem.getContent());
}
}
//若应采用空布局,则应返回1来承载空布局
@Override
public int getItemCount() {
if(items.size()<=0){
return 1;
}
return items.size();
}
//自定义的空布局
public class MyHolder extends RecyclerView.ViewHolder{
//此处为正常布局的控件绑定(我用的butterknife,若用findviewbyid,可在构造方法用)
@BindView(R.id.tv_title) public TextView titleTextView;
@BindView(R.id.tv_content)public TextView contentTextView;
public MyHolder(final View view){
super(view);
ButterKnife.bind(this,view);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle bundle = new Bundle();
bundle.putString("articleId",articleId);
Intent intent = new Intent(context, ArticleDetailActivity.class);
intent.putExtras(bundle);
context.startActivity(intent);
}
});
}
}
}
解释都在代码注释里啦
就这样根据activity传过来的list,会判断并返回相应的布局