代码拉取完成,页面将自动刷新
RecyclerView Adapter 常用功能(点击事件、绑定数据、Header、Footer、动画等)进行封装。
FastAdapter<String> adapter = new FastAdapter<String>(this, R.layout.item_normal, NAMES) {
@Override
protected ViewHolder onCreateViewHolderImpl(@NonNull ViewGroup parent, int viewType) {
if (Math.random() > 0.5) {
TextView textView = new TextView(parent.getContext());
textView.setId(R.id.title);
textView.setTextSize(40f);
//返回自定义的Holder
return new ViewHolder(textView);
}
//返回默认创建的Holder(需设置默认的layoutRes)
return super.onCreateViewHolderImpl(parent, viewType);
}
//处理自定义的 itemType
@Override
protected int getItemViewTypeImpl(int position, int dataPosition) {
return super.getItemViewTypeImpl(position, dataPosition);
}
@Override
public void bindData(ViewHolder holder, String s) {
//绑定数据样式
holder.setTextColorRes(R.id.title, R.color.design_default_color_primary_dark);
holder.setText(R.id.title, s);
}
};
//列表项点击
adapter.setOnItemClickListener((view, holder, data) -> {
Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
});
//列表项子视图点击事件处理
adapter.setOnItemChildClickListener(R.id.trigger, (view, holder, data) -> {
Toast.makeText(this, "trigger -> " + data, Toast.LENGTH_SHORT).show();
});
//设置动画, 可自定义实现ItemAnimator接口, once 为true时动画只执行一次
adapter.setItemAnimator(new AlphaItemAnimator(), false);
//设置自定义 SpanSizeLookup
adapter.setSpanSizeLookup(new SpanSizeLookup<String>() {
@Override
public int getSpanSize(int itemViewType, int spanCount, int position, @Nullable String s) {
//直接 return spanCount 代表此项占一整行
if ("Sofia".equals(s)) return spanCount;
return super.getSpanSize(itemViewType, spanCount, position, s);
}
});
//添加 Header
adapter.addHeaderView(makeATextView());
//添加 Footer
adapter.addFooterView(makeATextView());
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
recyclerView.setAdapter(adapter);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型