ExecFunction编程式接口
| public interface ExecFunction { |
| public void exec(Object data, View view); |
| } |
MyAdapter.java:
| public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{ |
| |
| |
| |
| |
| |
| |
| |
| |
| private List dataResource; |
| private int layoutId ; |
| private ExecFunction function; |
| private int len = -1; |
| public RecyclerView view; |
| |
| |
| |
| |
| |
| |
| |
| |
| public MyAdapter(AppCompatActivity activity, int resourceId, List dataResource, int layoutId, ExecFunction function){ |
| this.dataResource = dataResource; |
| this.layoutId = layoutId; |
| this.function = function; |
| this.view = (RecyclerView)activity.findViewById(resourceId); |
| this.view.setAdapter(this); |
| } |
| |
| public void setLength(int length){ |
| this.len = length; |
| } |
| |
| @NonNull |
| @Override |
| public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { |
| View view = LayoutInflater.from(parent.getContext()).inflate(layoutId,parent,false); |
| return new ViewHolder(view); |
| } |
| |
| @Override |
| public void onBindViewHolder(@NonNull ViewHolder holder, int position) { |
| View view = holder.getView(); |
| function.exec(dataResource.get(position),view); |
| } |
| |
| @Override |
| public int getItemCount() { |
| if(this.len>0){ |
| return this.len; |
| }else if(this.len==0){ |
| throw new RuntimeException("The length must not be 0"); |
| } |
| return dataResource.size(); |
| } |
| |
| public static class ViewHolder extends RecyclerView.ViewHolder{ |
| private View view = null; |
| public ViewHolder(@NonNull View itemView) { |
| super(itemView); |
| this.view = itemView; |
| } |
| public View getView(){ |
| return view; |
| } |
| } |
| } |
使用示例:
| MyAdapter adapter = new MyAdapter(this,R.id.recycle_list,list, R.layout.test_view, new ExecFunction() { |
| @Override |
| public void exec(Object data, View view) { |
| final TestBean d = (TestBean) (data); |
| TextView title = (TextView)view.findViewById(R.id.test_title); |
| TextView content = (TextView)view.findViewById(R.id.test_content); |
| content.setText(d.name); |
| title.setText(String.valueOf(d.age)); |
| view.setOnClickListener(new View.OnClickListener() { |
| @Override |
| public void onClick(View view) { |
| Toast t = Toast.makeText(this,"点击了"+d.name, Toast.LENGTH_SHORT); |
| t.show(); |
| } |
| }); |
| } |
| }); |
| adapter.setLength(12); |
| adapter.view.setLayoutManager(new GridLayoutManager(this,4)); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!