目前很多人 都想知道android中的ListView是怎样实现无限循环滚动的, 现在给大家一个例子, 是项目中的一个模块。
项目需求:每个Activity的顶端显示一个ListView, 内容是赞助公司的名称和简要信息。
实现:
1 装有ListView的xml布局
<ListView android:id="@+id/history_list"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:fadeScrollbars="true"
android:dividerHeight="2dip"
android:layout_weight="6"></ListView>
2 实现滚屏的java类
package com.beiruanneng.util;
import java.util.List;
import java.util.Map;
import java.util.TimerTask;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.beiruanneng.activity.R;
public class TimerTaskForListViewRolling extends TimerTask {
private ListView listView;
private int smoothBy = 1;
private Context context;
private List<Map<String, String>> sponsorList;
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
listView.smoothScrollBy(smoothBy, 0);
};
};
public TimerTaskForListViewRolling(ListView listView, Context context, List<Map<String, String>> sponsorList) {
this.listView = listView;
this.context = context;
this.sponsorList = sponsorList;
listView.setAdapter(new MyBaseAdapter());
}
@Override
public void run() {
Message msg = handler.obtainMessage();
handler.sendMessage(msg);
}
private class MyBaseAdapter extends BaseAdapter {
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.sponsor_item, null);;
}
//找到listView中的item, 并且给每个item设置值
TextView sponsorNameTextView = (TextView) convertView.findViewById(R.id.sponsor_name);
TextView sponsorInfoTextView = (TextView) convertView.findViewById(R.id.sponsor_info);
Map<String, String> map = sponsorList.get(position%sponsorList.size());
String sponsorCompanyName = map.get(DataUtil.SPONSOR_NAME);
String sponsorCompanyInfo = map.get(DataUtil.SPONSOR_INFO);
sponsorNameTextView.setText(sponsorCompanyName);
sponsorInfoTextView.setText(sponsorCompanyInfo);
return convertView;
}
}
}
3 在Activity中直接调用:
//广告滚动效果
new Timer().schedule(new TimerTaskForListViewRolling(sponsorCompanyList, this, DataUtil.getSponsorDataForListView()), 100, 100);
然后就完成了, 呵呵。
大家 有什么更好的想法, 请指教。
分享到:
相关推荐
因项目需要循环展示列表数据,所以就实现了这个无限循环滚动的 LIstView.先说一下原理,原理呢,其实很简单,首先将要展示的数据循环展示三遍 监听ListView的滚动事件,当ListView滚动到第一遍第第二个时,ListView...
为了更直观地理解这个过程,可以参考链接中的博客文章:[Android ListView无限循环滚动实现](http://blog.csdn.net/laibaigan/article/details/8863627)。这篇文章详细介绍了实现思路和关键代码,对于初学者来说是一...
除了自定义Adapter,还可以通过第三方库实现这个功能,如Android的`AutoScrollViewPager`库,它可以轻松实现无限循环滚动。但需要注意,对于ListView来说,如果数据量特别大,这种自动循环滚动可能会消耗较多性能,...
综上所述,实现Android ListView的自动循环滚动涉及到对Adapter的扩展、Handler和Runnable的使用、ListView滚动事件的监听以及用户体验的优化。这是一个涉及多个技术点的综合问题,但通过合理的编程设计,我们可以为...
无限滚动通常通过循环数组或者复用视图来实现。开发者可能采用了以下策略: 1. **数据循环**:将数据集合视为一个环形结构,当用户滑动到集合的末尾时,重置滚动位置至集合的起始,这样用户感知不到结束,实现了...
- **无限循环滚动**:通过复制数据集并在两端添加重复数据,实现看起来无限循环的效果。 - **自定义动画**:利用RecyclerView的ItemAnimator可以为列表项添加进出动画,提升交互体验。 在提供的压缩包文件中,可能...
2. **循环滚动**:Gallery默认支持无限循环滚动,用户可以设置`setCircular(false)`关闭此特性。 3. **监听事件**:可以通过设置`OnItemSelectedListener`监听用户的选择行为,当用户在Gallery中选择了一个项目时,...
当用户滚动到底部时,我们常常希望实现“无限加载”或者称为“下拉刷新”、“上拉加载更多”的功能,以动态加载新的数据。这个功能使得用户无需手动翻页,提升了用户体验。下面将详细解释如何在ListView中使用线程来...
1. **基于Adapter的实现**:通过复用ListView的item并巧妙地调整数据源,当用户滚动到底部时,将最后一个item移动到列表的开头,模拟无限循环的效果。这种方法需要对ListView的滚动事件进行监听,并在适当时机更新...
在这个案例中,我们将深入探讨如何利用ListView来创建一个循环滚动的新闻展示界面。 首先,我们需要理解ListView的基本原理。ListView是Android中的一个视图组件,它能够显示一列可滚动的项目,每个项目可以是...
通过自定义Adapter和监听滚动事件,我们可以实现一个流畅的无限循环效果,提升用户体验。这个过程中,InfiniteScrollView可能提供了方便的封装,但理解其背后的逻辑对于解决类似问题或进行扩展非常重要。
在Android开发中,"ListView实现跑马灯效果"是一个常见的需求,它通常用于展示滚动循环的文字或图片。跑马灯效果使得内容能够自动从一端滚动到另一端,然后无缝衔接回初始位置,给人一种连续循环的感觉,常用于新闻...
而跑马灯(Marquee)效果则是TextView的一种特殊滚动显示方式,通常用于显示过长文本时,使其能在有限的空间内循环滚动。本Demo重点是实现ListView的每一项都有TextView的跑马灯效果。 首先,我们来看TextView的...
- `isLastPage()`:判断是否已经加载到最后一页,防止无限循环加载。 - `loadData(int page)`:根据页码加载数据,可能涉及网络请求或数据库操作。 - `onPostExecute()`(如果使用AsyncTask):在网络请求完成后更新...
这可能包括处理滑动冲突、避免无限循环加载、优化滚动性能等。此外,项目中可能还包含了详尽的注释,帮助初学者理解各个部分的代码逻辑,提高学习效率。 在实际应用中,为了实现这两个功能,你需要: 1. 引入...
首先,我们要了解自定义垂直循环滚动布局的核心在于实现一个无限循环的效果。这通常通过复用View来达到目的,就像ListView或RecyclerView中的Adapter机制一样。在Android中,我们可以使用自定义ViewGroup和Adapter来...
本项目“Android左右无限循环轮播图”提供了一个实现这种效果的源码实例,名为“RecycleDemo”。轮播图的无限循环功能意味着当用户在最后一张图片向左滑动时,它会无缝地跳转到第一张图片,反之亦然。这种设计极大地...
2. RecyclerView + LinearLayoutManager + PagerSnapHelper:RecyclerView是一个更灵活的视图滑动组件,结合LinearLayoutManager和PagerSnapHelper可以实现类似ViewPager的循环滚动。 三、自定义循环View的实现步骤...
2. **自定义ListView或GridView**:如果你确实需要嵌套,可以考虑自定义ListView或GridView,重写onMeasure方法,使其只测量一次,而不是在ScrollView中无限循环测量。这样可以防止滚动冲突。 3. **限制ScrollView...