recycleview列表多种样式,列表为空的设置,列表刷新
刷新列表:尽量使用:adapter.notifyItemRangeChanged(0,list.size()),或者类似方法,有动画;
adapter
public class Adapter2 extends RecyclerView.Adapter<Adapter2.ViewHolder2> { private final int TYPE_EMPTY = 0; private List<File2> items; private Context context; @Override public int getItemViewType(int position) { if (items.isEmpty()){ return TYPE_EMPTY; } return 1; } public Adapter2(List<OfflineFile2> items) { this.items = items; } @NonNull @Override public ViewHolder2 onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { context=parent.getContext(); if (viewType==TYPE_EMPTY){ View view = LayoutInflater.from(context) .inflate(R.layout.list_item_empty, parent, false); TextView tv=view.findViewById(R.id.empty_tv_hint); tv.setText("暂无文件"); return new ViewHolder2(view); } View view = LayoutInflater.from(context) .inflate(R.layout.item_file2, parent, false); return new ViewHolder2(view); } @Override public void onBindViewHolder(@NonNull ViewHolder2 holder, int position) { if (getItemViewType(position)==TYPE_EMPTY){ return; } File2 file = items.get(position); holder.bind(file, holder); } @Override public int getItemCount() { if (items.isEmpty()){ return 1; } return items.size(); } public class ViewHolder2 extends RecyclerView.ViewHolder { private TextView tvName; public ViewHolder2(@NonNull View itemView) { super(itemView); if (getItemViewType()==TYPE_EMPTY){ return; } tvName = itemView.findViewById(R.id.item_tv_name); } public void bind(File2 file, ViewHolder2 holder2) { if (file==null){ return; } // 设置文件名 tvName.setText(file.getName()); dealViewVisibleWithState(file); } } }