`
zhengaihua
  • 浏览: 21097 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

listview多条目加载

阅读更多
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的使用优化最为全面.具有...

    ListView上拉加载更多

    "ListView上拉加载更多"的功能在很多应用中都能看到,比如网易新闻客户端,它增强了用户体验,使得用户无需手动翻页就能获取更多内容。这个功能通过集成下拉刷新和上拉加载组件,可以动态加载数据,从而有效地节省了...

    android ListView滑动自动加载

    7. **优化用户体验**:为了避免用户频繁触发加载更多,可以在加载过程中禁用ListView的滚动。当数据加载完成后再恢复滚动。此外,也可以添加一个进度条或者“加载更多”的提示文本,让用户知道正在获取数据。 通过...

    ListView块状滚动条加分批加载数据

    本项目实现了ListView的两个关键特性:块状滚动条(类似微博、QQ微博)和分批加载数据(即无限滚动或下拉加载更多)。下面将详细讲解这两个功能的实现原理及步骤。 **一、ListView自定义滚动条** 1. **创建自定义...

    listview多条删除

    "listview多条删除"这个主题聚焦于ListView的一项高级功能,即如何实现长按条目后进行多条删除,并提供撤销操作。这里我们将详细探讨这个过程涉及的技术点。 1. **长按事件处理**: 在ListView中,我们需要监听...

    android listView 分页加载

    分页加载(也称为懒加载)是在用户滚动到ListView底部时,才动态加载更多数据的方法。这种策略避免了一次性加载大量数据导致的内存消耗和应用启动时的延迟,提高了应用的响应速度和流畅性。 2. 实现方式: - ...

    Android ListView 实现分批加载

    在Android中,我们可以监听ListView的滚动事件来判断何时加载更多数据。 二、实现步骤 1. 数据源:首先,你需要一个数据源,比如ArrayList或Cursor,用于存储已加载的数据。每次加载新数据时,都会向这个数据源添加...

    Android ListView页面加载数据显示更多

    "Android ListView页面加载数据显示更多"这个主题涉及到的关键知识点是ListView的分页加载,也就是如何在用户滚动到列表底部时动态加载更多的数据。这种功能在大数据量的列表中非常常见,可以有效地减少内存消耗并...

    自定义listview下拉刷新上拉加载更多以及与google官方的下拉刷新结合使用

    在Android开发中,ListView是常用的数据展示控件,但原生的ListView并不支持下拉刷新和上拉加载更多的功能。为了实现这些高级特性,开发者通常需要进行自定义或者使用第三方库。本教程将探讨如何自定义ListView实现...

    listview下拉刷新上拉加载

    上拉加载,也称为无限滚动或加载更多,是在用户接近ListView底部时触发加载更多数据的功能。这通常通过添加一个可动画的尾部视图来实现,当用户滚动接近列表底部时,这个视图会出现并显示加载提示,比如“加载更多.....

    listview滚动实现异步加载

    异步加载的基本思想是在用户滚动ListView时,只加载当前可见区域的数据和图片,而当用户滚动到列表底部时,自动触发后台任务去加载更多数据。这样可以避免一次性加载大量数据导致的性能问题,同时减少了内存占用。 ...

    Listview上拉加载下拉刷新网络数据

    在Android开发中,ListView是一种常见的用于展示大量列表数据的组件,尤其在处理长列表时,为了提供更好的用户体验,通常会采用“上拉加载更多”和“下拉刷新”的功能。这两种交互模式使得用户无需手动翻页,只需轻...

    ListView滚动到底部自动加载剩余数据

    当用户滚动到ListView的底部时,自动加载更多的数据功能通常被称为“无限滚动”或“下拉加载更多”。这个特性提高了用户体验,避免了用户手动刷新或点击加载按钮来获取新数据的不便。下面将详细解释如何实现ListView...

    listview上拉下拉加载自动刷新

    例如,当ListView为空或者已经加载到最后一条数据时,不再显示"上拉加载更多"的footer,而在数据初始加载时,不显示"下拉刷新"的header。 在实际实现中,我们通常会使用第三方库如XListView、SwipeRefreshLayout等...

    ListView的demo,拖曳加载

    在这个"ListView的demo,拖曳加载"项目中,开发者实现了列表数据的分页加载功能,即初次加载20条数据,当用户拖曳到底部后,再自动加载接下来的20条数据,这种技术被称为“无限滚动”或“下拉刷新”。 首先,我们来...

    ListView快速显示100万条数据用时1秒

    综上所述,优化ListView的显示性能涉及多个层面,包括数据加载策略、视图复用、后台处理、数据结构选择等。通过合理的组合和应用这些策略,即使是处理100万条数据,也能实现快速显示,提升用户体验。

    ListView的分页加载

    分页加载是指在用户滚动列表到底部或者点击加载更多按钮时,只加载当前屏幕显示的数据量,而不是一次性加载所有数据。这种加载方式可以显著减少内存消耗,避免一次性加载大量数据导致应用卡顿。 要实现ListView的...

    ListView加载更多示例

    ListView加载更多的功能是为了提高用户体验,避免一次性加载过多数据导致内存消耗和用户等待时间。这个示例将详细讲解如何实现ListView的分页加载机制,让用户在滚动到底部时自动加载更多内容。 一、ListView基础 ...

    vb listview动态的加载数据

    3. **事件监听**:在VB中,可以监听ListView的Scroll事件,当用户滚动滚动条时触发加载更多数据的操作。此外,还可以监听MouseWheel事件,处理鼠标滚轮滚动的情况。 4. **分页技术**:动态加载数据通常与分页技术...

    ListView加载不同布局.zip

    在Android开发中,ListView...在实际应用中,你可能还需要考虑更多细节,如数据与布局类型的映射策略、优化ListView的滚动性能等。通过这种方式,我们可以灵活地定制ListView的显示效果,为用户提供更丰富的视觉体验。

Global site tag (gtag.js) - Google Analytics