简介:

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

功效:

实现原理:

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

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

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

步骤:

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

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

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

  1. public class MainActivity extends Activity {
  2.  
  3. private HListView mListView1;
  4. private HListView mListView2;
  5. private HListView mListView3;
  6. private HListView mListView4;
  7. private HListView mListView5;
  8. private List<HListView> viewList = new ArrayList<HListView>();
  9.  
  10. private String[] contentArray = new String[] { "Terry1", "Terry2",
  11. "Terry3", "Terry4", "Terry5", "Terry6", "Terry7", "Terry8",
  12. "Terry9", "Terry10", "Terry11", "Terry12", "Terry13", "Terry14",
  13. "Terry15", "Terry16", "Terry17", "Terry18" };
  14.  
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_main);
  19. mListView1 = (HListView) findViewById(R.id.listview1);
  20. mListView2 = (HListView) findViewById(R.id.listview2);
  21. mListView3 = (HListView) findViewById(R.id.listview3);
  22. mListView4 = (HListView) findViewById(R.id.listview4);
  23. mListView5 = (HListView) findViewById(R.id.listview5);
  24.  
  25. mListView1.setAdapter(new MyAdapter());
  26. mListView2.setAdapter(new MyAdapter());
  27. mListView3.setAdapter(new MyAdapter());
  28. mListView4.setAdapter(new MyAdapter());
  29. mListView5.setAdapter(new MyAdapter());
  30.  
  31. viewList.add(mListView1);
  32. viewList.add(mListView2);
  33. viewList.add(mListView3);
  34. viewList.add(mListView4);
  35. viewList.add(mListView5);
  36.  
  37. MyScrollListener mListener = new MyScrollListener();
  38. for (HListView item : viewList) {
  39. item.setOnScrollListener(mListener);
  40. }
  41. }
  42.  
  43. private class MyScrollListener implements OnScrollListener {
  44.  
  45. @Override
  46. public void onScrollStateChanged(AbsHListView view, int scrollState) {
  47. // 关键代码
  48. if (scrollState == SCROLL_STATE_IDLE
  49. || scrollState == SCROLL_STATE_TOUCH_SCROLL) {
  50. View subView = view.getChildAt(0);
  51. if (subView != null) {
  52. final int top = subView.getLeft();
  53. final int position = view.getFirstVisiblePosition();
  54. for (HListView item : viewList) {
  55. item.setSelectionFromLeft(position, top);
  56. }
  57. }
  58. }
  59. }
  60.  
  61. @Override
  62. public void onScroll(AbsHListView view, int firstVisibleItem,
  63. int visibleItemCount, int totalItemCount) {
  64. // 关键代码
  65. View subView = view.getChildAt(0);
  66. if (subView != null) {
  67. final int top = subView.getLeft();
  68. for (HListView item : viewList) {
  69. item.setSelectionFromLeft(firstVisibleItem, top);
  70. }
  71. }
  72. }
  73.  
  74. }
  75.  
  76. private class MyAdapter extends BaseAdapter {
  77.  
  78. @Override
  79. public int getCount() {
  80. return contentArray.length;
  81. }
  82.  
  83. @Override
  84. public Object getItem(int position) {
  85. return contentArray[position];
  86. }
  87.  
  88. @Override
  89. public long getItemId(int position) {
  90. return position;
  91. }
  92.  
  93. @Override
  94. public View getView(int position, View convertView, ViewGroup parent) {
  95. TextView tv = (TextView) getLayoutInflater().inflate(R.layout.item,
  96. parent, false);
  97. tv.setText(contentArray[position]);
  98. return tv;
  99. }
  100.  
  101. }
  102. }

全文完

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

多于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. fragment android

    在Eoe中看到了 一个关于的 详细讲解,相信对 学Fragment 有帮助 android fragment基础与源码案例: Fragment动画效果 http://www.eoeandroid.co ...

  2. linux设备驱动程序第四部分:从如何定位oops对代码的调试方法,驱动线

    在一个我们谈到了如何编写一个简单的字符设备驱动程序,我们不是神,编写肯定会失败的代码,在这个过程中,我们需要继续写代码调试.在普通c应用.我们经常使用printf输出信息.或者使用gdb要调试程序,然 ...

  3. MVC区域 vs2013 mvc 搭建基架项

    http://www.it165.net/pro/html/201404/12822.html

  4. error: png.h not found.

    跑php设备 --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable- ...

  5. 递归遍历XML所有节点

    package xml; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.DocumentEx ...

  6. leetcode先刷_Remove Duplicates from Sorted List II

    删除重复节点列表中的.假设所有val如果仅仅是为了保持一个非常easy.应承担重复val节点被删除话.要保持pre节点.每当你想保存这pre问题节点,应该head节点可以被取出,好了,没问题边境控制. ...

  7. 浅谈http请求数据分析

    前段时间,我一个朋友给我打了个电话.说是现在在搞网络销售,问我能不能帮他整个自动发帖机.说实在的,以前没有弄过这块,我就跟他讲我试试看吧,能不能成不能保证.毕竟是搞程序的嘛,自学的能力还是有滴.经过一 ...

  8. Cookie rejected: Illegal path attribute &quot;/nexus&quot;. Path of origin: &quot;/content/&quot; 解

    问题叙述性说明 通过运行"mvn clean deploy" 命令 将 Maven 项目公布 Nexus 当PW.举例控制台输出以下警告消息: [INFO] Downloaded: ...

  9. [LeetCode61]Rotate List

    题目: Given a list, rotate the list to the right by k places, where k is non-negative. For example:Giv ...

  10. Razor基础语法

    原文:Razor基础语法 一.介绍      Razor是ASP.NET MVC视图引擎的代号,支持.cshtml和.vbhtml两种模板文件,符号@标记服务端代码的开始,比以前asp.net的< ...