简介:

发展过程中可能遇到的2一个或多个其他listview为了用相应的关系保持滚动的情况下一起,本文演示了这种效应为大家。

功效:

实现原理:

在滚动当中不论什么一个ListView的时候,同一时候设置其它ListView的滚动位置。

演示样例中使用的是水平ListView。

HListView的项目托管地址是:https://github.com/sephiroth74/HorizontalVariableListView   有兴趣的能够研究一下

步骤:

1、为了能实现同一时候滚动的情况,有一些条件。首先是HListView的Item的宽度是一一直的,如我设置的

<?

xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="60dp"
android:layout_height="60dp"
android:gravity="center"
android:background="#abcdef"
android:text="Terry10" />

2、为了大家仅仅管的感受做法,我将源代码贴出例如以下,大家着重看关键代码就可以:

public class MainActivity extends Activity {

	private HListView mListView1;
private HListView mListView2;
private HListView mListView3;
private HListView mListView4;
private HListView mListView5;
private List<HListView> viewList = new ArrayList<HListView>(); private String[] contentArray = new String[] { "Terry1", "Terry2",
"Terry3", "Terry4", "Terry5", "Terry6", "Terry7", "Terry8",
"Terry9", "Terry10", "Terry11", "Terry12", "Terry13", "Terry14",
"Terry15", "Terry16", "Terry17", "Terry18" }; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView1 = (HListView) findViewById(R.id.listview1);
mListView2 = (HListView) findViewById(R.id.listview2);
mListView3 = (HListView) findViewById(R.id.listview3);
mListView4 = (HListView) findViewById(R.id.listview4);
mListView5 = (HListView) findViewById(R.id.listview5); mListView1.setAdapter(new MyAdapter());
mListView2.setAdapter(new MyAdapter());
mListView3.setAdapter(new MyAdapter());
mListView4.setAdapter(new MyAdapter());
mListView5.setAdapter(new MyAdapter()); viewList.add(mListView1);
viewList.add(mListView2);
viewList.add(mListView3);
viewList.add(mListView4);
viewList.add(mListView5); MyScrollListener mListener = new MyScrollListener();
for (HListView item : viewList) {
item.setOnScrollListener(mListener);
}
} private class MyScrollListener implements OnScrollListener { @Override
public void onScrollStateChanged(AbsHListView view, int scrollState) {
// 关键代码
if (scrollState == SCROLL_STATE_IDLE
|| scrollState == SCROLL_STATE_TOUCH_SCROLL) {
View subView = view.getChildAt(0);
if (subView != null) {
final int top = subView.getLeft();
final int position = view.getFirstVisiblePosition();
for (HListView item : viewList) {
item.setSelectionFromLeft(position, top);
}
}
}
} @Override
public void onScroll(AbsHListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// 关键代码
View subView = view.getChildAt(0);
if (subView != null) {
final int top = subView.getLeft();
for (HListView item : viewList) {
item.setSelectionFromLeft(firstVisibleItem, top);
}
}
} } private class MyAdapter extends BaseAdapter { @Override
public int getCount() {
return contentArray.length;
} @Override
public Object getItem(int position) {
return contentArray[position];
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = (TextView) getLayoutInflater().inflate(R.layout.item,
parent, false);
tv.setText(contentArray[position]);
return tv;
} }
}

全文完

版权声明:本文博主原创文章,博客,未经同意不得转载。

多于ListView同步滚动的更多相关文章

  1. Android VLC播放器二次开发3——音乐播放(歌曲列表+歌词同步滚动)

    今天讲一下对VLC播放器音频播放功能进行二次开发,讲解如何改造音乐播放相关功能.最近一直在忙着优化视频解码部分代码,因为我的视频播放器需要在一台主频比较低的机器上跑(800M主频),所以视频解码能力受 ...

  2. 支持同步滚动的RichTextbox控件

    using System.Windows.Forms; public class SynchronizedScrollRichTextBox : System.Windows.Forms.RichTe ...

  3. Android 实现ListView不可滚动效果

    希望得到的效果是ListView不能滚动,但是最大的问题在与ListView Item还必有点击事件,如果不需要点击事件那就简单了,直接设置ListView.setEnable(false); 如果还 ...

  4. Android 设置ListView不可滚动 及在ScrollView中不可滚动的设置

    http://m.blog.csdn.net/blog/yusewuhen/43706169 转载请注明出处: http://blog.csdn.net/androiddevelop/article/ ...

  5. C#超简单方法实现两个richtextbox控件滚动条同步滚动

    此文章属于作者原创,转载请注明,谢谢 有时候我们需要实现对照文章等,往往将文本放到两个richtextbox控件中,但是,如果我们需要同步滚动查看,来达到更好的观看效果. 当然,传统的方法重载控件或者 ...

  6. android testview + listview 整体滚动刷新

    listview滚动刷新不再讲述怎么实现 因为想实现整体滚动的效果,初始计划scrollView嵌套listview实现. 问题一:scrollview嵌套listview时,listview只能显示 ...

  7. WPF学习笔记(5):两个DataGrid的滚动条实现同步滚动

    效果:两个DataGrid的滚动条实现同步滚动. 代码参考了博客园chuncn的文章<.net中同步多个ScrollViewer滚动的四种方法>,原文是针对ListBox的.现改为针对Da ...

  8. VS编程,WPF中两个滚动条 ScrollViewer 同步滚动的一种方法

    原文:VS编程,WPF中两个滚动条 ScrollViewer 同步滚动的一种方法 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/ar ...

  9. 数据更新后让ListView自动滚动到底部

    在做聊天界面的时候想要发送新的数据后,listview自动滚动到底部,显示出最新的数据.网上找了两个方法,觉得不错,记录一下. 方法一: 给listview添加下面两个属性 android:stack ...

随机推荐

  1. Linux 该文件命令查看内容

    Linux系统,请使用以下命令来查看文件的内容: cat tac  从最后一行開始显示.能够看出 tac 是 cat 的倒著写! nl   显示的时候,顺道输出行号! more 一页一页的显示文件内容 ...

  2. Facebook Asynchronous Layout and Rending

    Facebook Asynchronous Layout and Rending by 吴雪莹 dispatch_async(backgroundQueue, ^{ storyNode = [[FBS ...

  3. iOS相机去黑框

    自己定义相机的时候,调用系统的相机,因为相机的分辨率,会出现短小的矩形框,总会出现黑色边框,例如以下图: 假设想实现全屏相机的话,这样做就能够了: CALayer *viewLayer = self. ...

  4. windbg更改cmd的token提升其特权

    采用windbg 调试xp. 执行cmd.whoami检查权限如下面: 以下要做的就是把cmd.exe 的token值用system的token替换. 1.  Ctrl + break ,windbg ...

  5. Visual Prolog 的 Web 专家系统 (7)

    GENI核心 -- 推理引擎(1)知识表示 GOAL最后一句是谓语infer(),它的含义是"论证". 因此,,进GENI核心,执行视图推理引擎. infer() infer(): ...

  6. HDU 4284 状压dp+spfa

    题意: 给定n个点 m条无向边 d元. 以下m行表示每条边 u<=>v 以及花费 w 以下top 以下top行 num c d 表示点标为num的城市 工资为c 健康证价格为d 目标是经过 ...

  7. OPhone SDK初体验

    OPhone SDK初体验 write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 背景说明 中国伟大的垄断龙头,世界上也是顶尖的中移动最 ...

  8. 非正确使用浮点数据由项目产生BUG讨论的问题

    乘分配 当小学学会了乘法分配.详细乘法分配:并与多个两个数相乘的,他们能够把这个数字乘以,然后加入.由于一个恒定.乘法分配律也能够使用表达式的定义"(a+b)×c = a×c+b×c&quo ...

  9. Unbound classpath container: &#39;JRE System Library [jdk17060]&#39; in project ***

    项目报告的错误列表 Unbound classpath container: 'JRE System Library [jdk17060]' in project **** 误. 原因是,我升级JDK ...

  10. 游戏 TRAP(SNRS)AlphaBeta版本

    大家好,我是PuzzledBoy,大一(大二快).我是一个独立的游戏开发商,我的梦想是成为一名伟大的艺术家的第九 今天来公布我的第一个独立游戏TRAP(SNRS)的Alpha測试版啦啦啦~~~! 游戏 ...