目前很多人 都想知道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...
因项目需要,所以实现ListView循环滚动的功能,相关链接 http://blog.csdn.net/laibaigan/article/details/8863627
实现listview自动循环滚动
c# listview 实现循环滚动显示
androidlistview 自动往上滚动。效果很炫
listview的循环滚动,不需要手去滑动,类似广告的滚动
主要介绍了Android编程实现ListView内容无限循环显示的方法,通过继承Adapter类实现ListView中的数据无限循环显示功能,需要的朋友可以参考下
Android 实现ListView滚动到底部自动加载数据
android listview 实现左滑删除置顶
android listview嵌套listview实现折叠列表
Android ListView实现各种版面设计功能 源码
android 布局中网格视图 ListView的简单运用 采用的是最简单的ArrayAdapter适配器
android用Listview实现时间轴的效果
Android ListView 实现分批加载
使用listview实现无限树,很好的展现出树的各个节点 和叶子
用ListView组件实现树形结构 主界面是继承Activity类 而不像网络上大多数都是继承ListActivity类
使用实现ListView实现微信好友列表 android ListView 微信 好友列表 自定义ImageView 自定义ListView
通过自定义listView实现表格,动态添加行列
Android listview实现自动自动换行!