package com.example.adapter; import java.util.List; import com.example.bean.CircleImageView; import com.example.bean.News; import com.example.indicator.R; import com.nostra13.universalimageloader.core.ImageLoader; import android.content.Context; import android.support.v4.app.FragmentActivity; 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 List<News> newsList; private Context context; public MyBaseAdapter(Context context, List<News> newsList) { this.context = context; this.newsList = newsList; } @Override public int getCount() { // TODO Auto-generated method stub return newsList.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { return 0; } @Override public int getItemViewType(int position) { News news = newsList.get(position); if (news.imgSmall != null && news.imgSmall.length() > 0) { return 1; } else { return 0; } } @Override public int getViewTypeCount() { return 4; } @Override public View getView(int position, View convertView, ViewGroup parent) { int i = getItemViewType(position); ViewHolder0 vh0 = null; ViewHolder1 vh1 = null; if (convertView == null) { switch (i) { case 0: convertView = View.inflate(context, R.layout.item2, null); vh0 = new ViewHolder0(); vh0.portrait = (CircleImageView) convertView .findViewById(R.id.portrait2); vh0.authorid = (TextView) convertView .findViewById(R.id.authorid2); vh0.body = (TextView) convertView.findViewById(R.id.body2); convertView.setTag(vh0); break; case 1: convertView = View.inflate(context, R.layout.item, null); vh1 = new ViewHolder1(); vh1.portrait = (CircleImageView) convertView .findViewById(R.id.portrait); vh1.authorid = (TextView) convertView .findViewById(R.id.authorid); vh1.body = (TextView) convertView.findViewById(R.id.body); vh1.imgSmall = (ImageView) convertView .findViewById(R.id.imgSmall); convertView.setTag(vh1); break; default: break; } } else { switch (i) { case 0: vh0 = (ViewHolder0) convertView.getTag(); break; case 1: vh1 = (ViewHolder1) convertView.getTag(); break; default: break; } } ImageLoader imageLoader = ImageLoader.getInstance(); News news = newsList.get(position); switch (i) { case 0: vh0.authorid.setText(news.authorid); vh0.body.setText(news.body); imageLoader.displayImage(news.portrait, vh0.portrait); break; case 1: vh1.authorid.setText(news.authorid); vh1.body.setText(news.body); imageLoader.displayImage(news.portrait, vh1.portrait); imageLoader.displayImage(news.imgSmall, vh1.imgSmall); break; default: break; } return convertView; } class ViewHolder0 { CircleImageView portrait; TextView authorid; TextView body; } class ViewHolder1 { CircleImageView portrait; TextView authorid; TextView body; ImageView imgSmall; } }
相关推荐
`ListView`是Android中用于显示一组长列表的视图,它可以根据用户滚动自动加载更多的数据,节省内存资源。`ListView`通常与`Adapter`一起使用,`Adapter`负责将数据集转换为可以在列表中显示的视图。在DEMO中,你...
在虚拟模式下,ListView只在需要时加载项,从而减少内存占用并提高滚动性能。要启用虚拟模式,设置`TListView.VirtualMode`属性为True,并实现`OnData`事件来提供项的数据。 ```delphi procedure TForm1.ListView1...
本项目实现了ListView的两个关键特性:块状滚动条(类似微博、QQ微博)和分批加载数据(即无限滚动或下拉加载更多)。下面将详细讲解这两个功能的实现原理及步骤。 **一、ListView自定义滚动条** 1. **创建自定义...
"listview多条删除"这个主题聚焦于ListView的一项高级功能,即如何实现长按条目后进行多条删除,并提供撤销操作。这里我们将详细探讨这个过程涉及的技术点。 1. **长按事件处理**: 在ListView中,我们需要监听...
2. **定义列表项布局**:为每个ListView项创建单独的布局文件(如list_item.xml),通常包含一个或多个TextView或其他视图,以显示每条数据的不同部分。 3. **创建Adapter**:实现一个自定义的Adapter,如`...
在VB6(Visual Basic 6)编程环境中,ListView控件是一种常见的用户界面元素,用于显示信息列表,可以包含多项属性,如图标、子项、复选框等。当需要处理海量数据时,直接将所有数据一次性加载到ListView可能会导致...
本篇文章将深入探讨如何实现一个ListView加载多种子布局的示例,即“MultyItemListView”。 首先,我们需要理解ListView的工作原理。ListView通过复用视图(ViewHolder)来提高性能,当一个item离开屏幕时,它的...
1. 首先,需要创建一个自定义的ListViewItem类,继承自`System.Windows.Forms.ListViewItem`,并添加CheckBox字段。 ```csharp public class CustomListViewItem : ListViewItem { public CheckBox CheckBox { get;...
ListViewItem item = new ListViewItem(reader[0].ToString()); item.SubItems.Add(reader[1].ToString()); // 根据实际列数添加更多子项 listView.Items.Add(item); } ``` 描述中还提到直接访问模式的操作,这...
在Android开发中,ListView...在实际应用中,你可能还需要考虑更多细节,如数据与布局类型的映射策略、优化ListView的滚动性能等。通过这种方式,我们可以灵活地定制ListView的显示效果,为用户提供更丰富的视觉体验。
本示例主要探讨如何在ListView中实现数据的刷新和更新,包括单条数据的更新以及多条数据的添加。以下是一些核心知识点: 1. **适配器(Adapter)**:ListView的核心是适配器,它负责将数据绑定到ListView的各个视图...
在Windows CE(Wince)平台下,开发PDA或PPC应用时,ListView控件是常用的界面元素,用于展示多条列表数据。然而,在实际使用过程中,开发者可能会遇到一个常见问题:无法批量删除ListView中的多项数据。这个问题...
ListView是Android平台上常用的一种列表控件,用于展示大量数据集,尤其适合于显示有固定格式且需要滚动查看的多项信息。在Android开发中,ListView的使用是基础且至关重要的,因为它能够有效地管理屏幕空间,提高...
这个"Android--ListView滚动到底部自动加载下页数据Demo"是实现一个常见的功能:无限滚动加载,也称为下拉刷新和上拉加载更多。这种功能在许多社交应用、电商应用中广泛应用,当用户滚动到列表底部时,会自动加载更...
1. **数据模型与适配器**:创建一个数据模型类,例如`Item`,包含每条数据的属性。然后,创建一个继承自`BaseAdapter`的自定义适配器,如`PaginationAdapter`,用于将数据模型转化为ListView可显示的视图。 2. **...
9. **自定义ListView项布局**:开发者可以根据需求自定义ListView项的布局XML,以实现各种复杂的设计,如包含多个组件或者自定义动画效果。 10. **异步加载数据**:为了提高用户体验,通常会使用异步加载策略,如...
在ListView滚动到底部时加载更多数据,而在顶部时,加载第一条数据。 8. **优化滚动体验**:可以使用`ListView.setSmoothScrollbarEnabled(true)`开启平滑滚动条,提高用户体验。 总之,实现ListView返回第一条...
"ListView拖动到底部刷新"(也称为“无限滚动”或“下拉加载更多”)是一种常见且实用的功能,它允许用户在滚动到ListView底部时自动加载更多内容。这种设计模式广泛应用于社交应用、新闻阅读应用等,为用户提供连续...
3. 如果数据量非常大,考虑使用`AbsListView.OnScrollListener`监听滑动事件,根据需要动态加载数据(下拉刷新、上拉加载更多)。 以上就是关于"ListView快速滑动,修改默认的滑动条"的知识点讲解,包括ListView的...
3. 分批加载:如果数据量极大,可以考虑使用Header/Footer来实现分页加载,或者使用下拉刷新和上拉加载更多功能。 六、ListView的其他特性 1. 分割线:通过android:divider属性设置分割线,android:dividerHeight...