osition).getName()); tv_item_tel.setText(friend_List.get(position).getTel()); return view; } } 3、然后在MainActivity中设置ListView的适配器并显示数据:ListView listView = findViewById(R.id.data_view); MyAdapter adapter = new MyAdapter(); listView.setAdapter(adapter); 4、ListView的事件监听:为了增加交互性,我们通常会添加点击事件监听。可以通过setOnItemClickListener方法来实现。listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Person person = (Person) parent.getItemAtPosition(position); Toast.makeText(MainActivity.this, person.toString(), Toast.LENGTH_SHORT).show(); } }); 5、自定义适配器:在实际开发中,ListView的数据源可能更复杂,这时我们可以创建一个自定义的Adapter,继承BaseAdapter,重写其中的方法,如getView(),在这个方法中根据数据动态创建和填充布局。例如,我们可以在item布局中添加更多的元素,如头像或详细描述。 6、优化ListView:ListView的一个重要特性是它可以复用视图(ViewHolder模式),这样可以提高滚动时的性能。在getView()方法中,先检查convertView是否为空,如果为空则创建新的View,否则直接复用。同时,使用ViewHolder类来保存每个item的子视图引用,避免频繁的findViewById操作。 ```java private static class ViewHolder { TextView tvItemName; TextView tvItemTel; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { convertView = View.inflate(context, R.layout.item, null); viewHolder = new ViewHolder(); viewHolder.tvItemName = (TextView) convertView.findViewById(R.id.tv_item_name); viewHolder.tvItemTel = (TextView) convertView.findViewById(R.id.tv_item_tel); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.tvItemName.setText(friend_List.get(position).getName()); viewHolder.tvItemTel.setText(friend_List.get(position).getTel()); return convertView; } ``` 7、ListView的其他功能:除了基本的显示和点击事件外,ListView还支持下拉刷新(SwipeRefreshLayout)、分组(ExpandableListView)、头部和尾部添加自定义视图等高级功能。开发者可以根据需求灵活运用。 总结:Android中的ListView是用于展示大量数据的常用组件,它通过适配器机制将数据转化为可显示的视图。开发者可以通过自定义适配器来处理不同类型的数据显示,并通过事件监听增强用户体验。合理地使用ListView的优化技巧,如ViewHolder模式,可以显著提升应用的性能。同时,熟悉并掌握ListView的扩展功能,能够使你的Android应用更具交互性和功能性。
- 粉丝: 7
- 资源: 952
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C183579-123578-c1235789.jpg
- Qt5.14 绘画板 Qt Creator C++项目
- python实现Excel表格合并
- Java实现读取Excel批量发送邮件.zip
- 【java毕业设计】商城后台管理系统源码(springboot+vue+mysql+说明文档).zip
- 【java毕业设计】开发停车位管理系统(调用百度地图API)源码(springboot+vue+mysql+说明文档).zip
- 星耀软件库(升级版).apk.1
- 基于Django后端和Vue前端的多语言购物车项目设计源码
- 基于Python与Vue的浮光在线教育平台源码设计
- 31129647070291Eclipson MXS R.zip