package com.example.day07_listview_; import java.util.List; import com.example.day07_listview_.bean.Data; import com.nostra13.universalimageloader.core.ImageLoader; import android.content.Context; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; public class MyBaseAdapter extends BaseAdapter { private Context context; private List<Data> list; public MyBaseAdapter(Context context, List<Data> list) { this.context = context; this.list = list; } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { int i = getItemViewType(position); ViewHolder0 viewHolder0 = null; ViewHolder1 viewHolder1 = null; ViewHolder2 viewHolder2 = null; ViewHolder3 viewHolder3 = null; if (convertView == null) { switch (i) { case 0: convertView = View.inflate(context, R.layout.large_image_list, null); viewHolder0 =new ViewHolder0(); viewHolder0.textView=(TextView) convertView.findViewById(R.id.large_textView); viewHolder0.imageView=(ImageView) convertView.findViewById(R.id.large_imageView); convertView.setTag(viewHolder0); break; case 1: convertView = View .inflate(context, R.layout.middle_image, null); viewHolder1 =new ViewHolder1(); viewHolder1.imageView=(ImageView) convertView.findViewById(R.id.middle_imageView); viewHolder1.textView=(TextView) convertView.findViewById(R.id.middle_textView); convertView.setTag(viewHolder1); break; case 2: convertView = View.inflate(context, R.layout.image_list, null); viewHolder2 =new ViewHolder2(); viewHolder2.imageView1=(ImageView) convertView.findViewById(R.id.image_list_imageView1); viewHolder2.imageView2=(ImageView) convertView.findViewById(R.id.image_list_imageView2); viewHolder2.imageView3=(ImageView) convertView.findViewById(R.id.image_list_imageView3); viewHolder2.textView=(TextView) convertView.findViewById(R.id.image_list_textView); convertView.setTag(viewHolder2); break; case 3: convertView = View.inflate(context, R.layout.textview, null); viewHolder3 =new ViewHolder3(); viewHolder3.textView=(TextView) convertView.findViewById(R.id.textView); convertView.setTag(viewHolder3); break; } }else{ switch (i) { case 0: viewHolder0 =(ViewHolder0) convertView.getTag(); break; case 1: viewHolder1 =(ViewHolder1) convertView.getTag(); break; case 2: viewHolder2=(ViewHolder2) convertView.getTag(); break; case 3: viewHolder3 =(ViewHolder3) convertView.getTag(); break; } } /////////////////////////璧嬪��///////////////////////////// ImageLoader imageLoader = ImageLoader.getInstance(); Data data = list.get(position); switch (i) { case 0: viewHolder0.textView.setText(data.title); imageLoader.displayImage(data.large_image_list.get(0).url, viewHolder0.imageView); break; case 1: viewHolder1.textView.setText(list.get(position).title); imageLoader.displayImage(data.middle_image.url, viewHolder1.imageView); break; case 2: viewHolder2.textView.setText(list.get(position).title); imageLoader.displayImage(data.image_list.get(0).url, viewHolder2.imageView1); imageLoader.displayImage(data.image_list.get(1).url, viewHolder2.imageView2); imageLoader.displayImage(data.image_list.get(2).url, viewHolder2.imageView3); break; case 3: viewHolder3.textView.setText(list.get(position).title); break; } return convertView; } @Override // listView 涓嶅悓鏉$洰绉嶇被鐨勪釜鏁� public int getViewTypeCount() { // TODO Auto-generated method stub return 4; } @Override // 姣忎釜鏉$洰鐨勫竷灞�瑙嗗浘 public int getItemViewType(int position){ Data data = list.get(position); // 涓�寮犲ぇ鍥撅細 if (data.large_image_list != null) { return 0; // 涓�寮犲皬鍥撅細 } else if (data.middle_image != null && !TextUtils.isEmpty(data.middle_image.url) && data.image_list != null && data.image_list.size() == 0) { return 1; // 涓夊紶灏忓浘 } else if (data.image_list != null && data.image_list.size() == 3) { return 2; // 鍙湁鏂囧瓧 } else if (data.large_image_list == null && data.middle_image == null && data.image_list != null && data.image_list.size() == 0) { return 3; } return 3; } class ViewHolder0 { TextView textView; ImageView imageView; } class ViewHolder1 { TextView textView; ImageView imageView; } class ViewHolder2 { TextView textView; ImageView imageView1; ImageView imageView2; ImageView imageView3; } class ViewHolder3 { TextView textView; } }
相关推荐
本例通过迭代器设计模式解决了ListView多条目显示与复用.无论多复杂的条目都可以应用本例成功加载.并完美实现复用.最后解决了一个多条目复用时,单个条目复用并保持下载进度的案例.对ListView的使用优化最为全面.具有...
"ListView上拉加载更多"的功能在很多应用中都能看到,比如网易新闻客户端,它增强了用户体验,使得用户无需手动翻页就能获取更多内容。这个功能通过集成下拉刷新和上拉加载组件,可以动态加载数据,从而有效地节省了...
7. **优化用户体验**:为了避免用户频繁触发加载更多,可以在加载过程中禁用ListView的滚动。当数据加载完成后再恢复滚动。此外,也可以添加一个进度条或者“加载更多”的提示文本,让用户知道正在获取数据。 通过...
本项目实现了ListView的两个关键特性:块状滚动条(类似微博、QQ微博)和分批加载数据(即无限滚动或下拉加载更多)。下面将详细讲解这两个功能的实现原理及步骤。 **一、ListView自定义滚动条** 1. **创建自定义...
"listview多条删除"这个主题聚焦于ListView的一项高级功能,即如何实现长按条目后进行多条删除,并提供撤销操作。这里我们将详细探讨这个过程涉及的技术点。 1. **长按事件处理**: 在ListView中,我们需要监听...
分页加载(也称为懒加载)是在用户滚动到ListView底部时,才动态加载更多数据的方法。这种策略避免了一次性加载大量数据导致的内存消耗和应用启动时的延迟,提高了应用的响应速度和流畅性。 2. 实现方式: - ...
"Android ListView页面加载数据显示更多"这个主题涉及到的关键知识点是ListView的分页加载,也就是如何在用户滚动到列表底部时动态加载更多的数据。这种功能在大数据量的列表中非常常见,可以有效地减少内存消耗并...
在Android开发中,ListView是常用的数据展示控件,但原生的ListView并不支持下拉刷新和上拉加载更多的功能。为了实现这些高级特性,开发者通常需要进行自定义或者使用第三方库。本教程将探讨如何自定义ListView实现...
上拉加载,也称为无限滚动或加载更多,是在用户接近ListView底部时触发加载更多数据的功能。这通常通过添加一个可动画的尾部视图来实现,当用户滚动接近列表底部时,这个视图会出现并显示加载提示,比如“加载更多.....
异步加载的基本思想是在用户滚动ListView时,只加载当前可见区域的数据和图片,而当用户滚动到列表底部时,自动触发后台任务去加载更多数据。这样可以避免一次性加载大量数据导致的性能问题,同时减少了内存占用。 ...
在Android开发中,ListView是一种常见的用于展示大量列表数据的组件,尤其在处理长列表时,为了提供更好的用户体验,通常会采用“上拉加载更多”和“下拉刷新”的功能。这两种交互模式使得用户无需手动翻页,只需轻...
当用户滚动到ListView的底部时,自动加载更多的数据功能通常被称为“无限滚动”或“下拉加载更多”。这个特性提高了用户体验,避免了用户手动刷新或点击加载按钮来获取新数据的不便。下面将详细解释如何实现ListView...
例如,当ListView为空或者已经加载到最后一条数据时,不再显示"上拉加载更多"的footer,而在数据初始加载时,不显示"下拉刷新"的header。 在实际实现中,我们通常会使用第三方库如XListView、SwipeRefreshLayout等...
在这个"ListView的demo,拖曳加载"项目中,开发者实现了列表数据的分页加载功能,即初次加载20条数据,当用户拖曳到底部后,再自动加载接下来的20条数据,这种技术被称为“无限滚动”或“下拉刷新”。 首先,我们来...
综上所述,优化ListView的显示性能涉及多个层面,包括数据加载策略、视图复用、后台处理、数据结构选择等。通过合理的组合和应用这些策略,即使是处理100万条数据,也能实现快速显示,提升用户体验。
分页加载是指在用户滚动列表到底部或者点击加载更多按钮时,只加载当前屏幕显示的数据量,而不是一次性加载所有数据。这种加载方式可以显著减少内存消耗,避免一次性加载大量数据导致应用卡顿。 要实现ListView的...
ListView加载更多的功能是为了提高用户体验,避免一次性加载过多数据导致内存消耗和用户等待时间。这个示例将详细讲解如何实现ListView的分页加载机制,让用户在滚动到底部时自动加载更多内容。 一、ListView基础 ...
3. **事件监听**:在VB中,可以监听ListView的Scroll事件,当用户滚动滚动条时触发加载更多数据的操作。此外,还可以监听MouseWheel事件,处理鼠标滚轮滚动的情况。 4. **分页技术**:动态加载数据通常与分页技术...
在Android开发中,ListView...在实际应用中,你可能还需要考虑更多细节,如数据与布局类型的映射策略、优化ListView的滚动性能等。通过这种方式,我们可以灵活地定制ListView的显示效果,为用户提供更丰富的视觉体验。
- 为了给用户明确的反馈,通常会在ListView底部添加一个"加载更多"的View,当数据加载完成后,更新这个View的状态,如显示“已加载全部”或隐藏。 7. **异步加载数据**: - 为了不影响UI线程,加载更多数据的操作...