1.最近项目在做学校成绩分析这一块,当我看到效果图的时候直接蒙蔽,以为实现起来很难,不过经过研究并不难

首先看下效果图


2.代码的实现

(1)首先上下移动通过scrollview实现左右侧同时滑动,右侧listview通过重写HorizontalScrollView实现右侧上下部分能够同时联动

package com.example.leftrightdemo;import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.HorizontalScrollView;
/**
* @Description:这个类也是从网上找的参考
*/
public class SyncHorizontalScrollView extends HorizontalScrollView {private View mView;public SyncHorizontalScrollView(Context context) {super(context);// TODO Auto-generated constructor stub}public SyncHorizontalScrollView(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}protected void onScrollChanged(int l, int t, int oldl, int oldt) {super.onScrollChanged(l, t, oldl, oldt);//设置控件滚动监听,得到滚动的距离,然后让传进来的view也设置相同的滚动具体if(mView!=null) {mView.scrollTo(l, t);}}/*** 设置跟它联动的view* @param view*/public void setScrollView(View view) {mView = view;}
}

(2)布局文件的实现

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><!-- 标题部分 --><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><!-- 左侧标题的父容器 --><LinearLayoutandroid:id="@+id/left_title_container"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><include layout="@layout/layout_left_item" /></LinearLayout></LinearLayout><com.example.leftrightdemo.SyncHorizontalScrollViewandroid:id="@+id/title_horsv"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:background="#ebebeb"android:scrollbars="@null" ><LinearLayoutandroid:id="@+id/right_title_container"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><include layout="@layout/layout_right_item" /></LinearLayout></com.example.leftrightdemo.SyncHorizontalScrollView></LinearLayout><!-- 此部分是内容部分 用ScrollView实现上下滚动效果 --><ScrollViewandroid:layout_width="match_parent"android:layout_height="wrap_content" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" ><!-- 左侧内容的父容器 --><LinearLayoutandroid:id="@+id/left_container"android:layout_width="120dp"android:layout_height="match_parent"android:gravity="center_vertical"android:orientation="vertical" ><ListViewandroid:id="@+id/left_container_listview"android:layout_width="130dp"android:layout_height="match_parent" ></ListView></LinearLayout><!-- 右侧内容的父容器 实现水平滚动 --><!-- android:fillViewport="true" 保证布满屏幕 --><com.example.leftrightdemo.SyncHorizontalScrollViewandroid:id="@+id/content_horsv"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:fillViewport="true"android:scrollbars="@null" ><LinearLayoutandroid:id="@+id/right_container"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_vertical"android:orientation="horizontal" ><ListViewandroid:id="@+id/right_container_listview"android:layout_width="match_parent"android:layout_height="match_parent" ></ListView></LinearLayout></com.example.leftrightdemo.SyncHorizontalScrollView></LinearLayout></ScrollView></LinearLayout>

(3)Activity里面的逻辑

package com.example.leftrightdemo;import java.util.ArrayList;
import java.util.List;import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;public class MainActivity extends Activity {private LinearLayout leftContainerView;private ListView leftListView;private LinearLayout rightContainerView;private ListView rightListView;private SyncHorizontalScrollView titleHorsv;private SyncHorizontalScrollView contentHorsv;private List<StudentScoreItem> leftlList;private List<SubjectScore> list;private List<StudentScoreItem> models;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);leftContainerView = (LinearLayout) findViewById(R.id.left_container);leftListView = (ListView) findViewById(R.id.left_container_listview);rightContainerView = (LinearLayout) findViewById(R.id.right_container);rightListView = (ListView) findViewById(R.id.right_container_listview);titleHorsv = (SyncHorizontalScrollView) findViewById(R.id.title_horsv);contentHorsv = (SyncHorizontalScrollView) findViewById(R.id.content_horsv);// 设置两个水平控件的联动titleHorsv.setScrollView(contentHorsv);contentHorsv.setScrollView(titleHorsv);// 添加左边的数据leftContainerView.setBackgroundColor(Color.YELLOW);initLeftData();MyLeftAdapter adapter = new MyLeftAdapter(this, leftlList);leftListView.setAdapter(adapter);UtilTools.setListViewHeightBasedOnChildren(leftListView);// 添加右边的数据rightContainerView.setBackgroundColor(Color.GRAY);initRightData();MyRightAdapter myRightAdapter = new MyRightAdapter(this, models);rightListView.setAdapter(myRightAdapter);//保证能够获取到正常的高度UtilTools.setListViewHeightBasedOnChildren(rightListView);TextView textView0 = (TextView)findViewById(R.id.right_item_textview0);TextView textView1 = (TextView)findViewById(R.id.right_item_textview1);TextView textView2 = (TextView)findViewById(R.id.right_item_textview2);TextView textView3 = (TextView)findViewById(R.id.right_item_textview3);TextView textView4 = (TextView)findViewById(R.id.right_item_textview4);TextView textView5 = (TextView)findViewById(R.id.right_item_textview5);TextView textView6 = (TextView)findViewById(R.id.right_item_textview6);TextView textView7 = (TextView)findViewById(R.id.right_item_textview7);TextView textView8 = (TextView)findViewById(R.id.right_item_textview8);TextView textView9 = (TextView)findViewById(R.id.right_item_textview9);TextView textView10 = (TextView)findViewById(R.id.right_item_textview10);TextView textView11 = (TextView)findViewById(R.id.right_item_textview11);TextView index[]={textView0,textView1,textView2,textView3,textView4,textView5,textView6,textView7,textView8,textView9,textView10,textView11};int size = leftlList.get(0).getSubjectsScore().size();int i=0;while(i!=size){index[i].setText(leftlList.get(0).getSubjectsScore().get(i).getSubjectName());index[i].setVisibility(View.VISIBLE);i++;}}private void initRightData() {models = leftlList;}private void initLeftData() {leftlList = new ArrayList<StudentScoreItem>();for (int i = 0; i < 25; i++) {List<SubjectScore> subjectsScore=new ArrayList<SubjectScore>();for (int j = 0; j < 7; j++) {SubjectScore obj=new SubjectScore(j+"", "科目"+j, j+100+"");subjectsScore.add(obj);}StudentScoreItem object=new StudentScoreItem("强强"+i, ""+i, ""+i, subjectsScore);leftlList.add(object);}}}

(4)说明

没有贴出来的是左右两边的listview,右边的listview的item布局是自己适应科目个数的,最多能适应12个,也可以自己去定制,没有贴出来的计算scroolview里面计算listview的高度类(这个可以用自定义的scrollview里面嵌套的listview来代替原生的listview,这样这个工具类也就用不到了)
代码地址http://download.csdn.net/detail/qq_27280457/9548957

Android实现类似股票列表联动相关推荐

  1. Android股票列表联动

    使用ScrollerView+RecycleView实现股票列表联动效果:一个可以拿来可以直接使用的解决方案,而且滑动流畅,带标题栏悬浮功能,支持整行的点击效果,支持长安事件: 效果如下图所示: 实现 ...

  2. Android实现平板的类股票列表联动

    最近遇到了一个很恶心的问题,要实现类似于股票列表联动的问题,一般手机上基本用不着,这个效果一般用在平板上,要是手机上用这种效果那就没得聊了,我只能呵呵了... 下面开始正题部分,先上效果图,便于理解: ...

  3. 使用HVScrollListView 超简单的实现类似股票列表的滑动

    HVScrollListView是一个可以实现类似股票横纵滑动的列表控件.以下为使用此控件实现的效果图: 详细使用方式及介绍请查看https://github.com/andjdk/HVScrollL ...

  4. android 左滑按钮,android开发类似微信列表向左滑动按钮操作

    话不多说,直接上代码,有详细的注释的. layout布局中: 主要是跟大家说一下listview怎么写: android:id="@+id/pull_refresh_viewId" ...

  5. android优雅的解决列表嵌套 类似订单列表这种

    常见问题,类似订单列表这种,每个大item,有相同布局,但有些头部和底部View没办法根据数据类型复用,如下图.很多人采用列表嵌套列表来做,但这样会造成UI卡顿,因为滑动的时候外层列表的Item需不断 ...

  6. 仿饿了么,百度外卖这些App的双ListView列表联动效果

    仿饿了么,百度外卖这些App的双列表联动效果 思路: 1.自定义一个悬浮条目且带移动替换效果的ListView. 2.在界面中左边是个普通的ListView,右边是我们自定义带效果的ListView. ...

  7. 使用 RecyclerView 做点餐列表联动页面

    使用 RecyclerView 做点餐列表联动页面 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近刚换了工作,来到一家做了11年餐饮软件管理的公司,开发平板端点餐安卓端原生app.因为之前 ...

  8. Android常用权限permission列表摘录

    Android常用权限permission列表摘录 一个Android应用程序需要权限才能调用某些android系统的功能:一个android应用也可能被其他应用调用,因此也需要声明调用自身所需要的权 ...

  9. A股数据分析之收集数据:股票列表和股价

    数据是进行数据分析的前提,本文主要讲述如何使用Python收集中国沪深两市的基础股票数据:股票列表和股价. 股票列表 众所周知,对于A股,中国有两个交易所即上海证券交易所和深圳证券交易所.我们主要从他 ...

最新文章

  1. 8.1shell介绍 8.2命令历史 8.3命令补全和别名 8.4通配符 8.5输入输出重定向
  2. 炎热的夏天过去了,老司机用Python带你爬爬哪个城市最热
  3. HBase -ROOT-和.META.表结构
  4. 被政治割裂的开源:伊朗开源拒绝来自以色列的PR
  5. 谷歌身份验证器验证码不对怎么回事_地面最强下载器:IDM+【安卓】详细介绍...
  6. Java并发编程—如何实现线程的超时中断
  7. gulp 安装时一直提示缺少模块( Cannot find module 'gulp-load-plugins')
  8. leetcode348. 判定井字棋胜负 好麻烦的代码
  9. mysql 抓包乱码_mysql知识资源收集
  10. 对文字颜色从左到右(横向)渐变的一点理解(坑)
  11. Rust 程序语言资料
  12. 计算机EXE文件改参数,exe文件修改器(eXeScope)
  13. 扩展欧几里得算法及其简单应用
  14. 网络保护第三层 WAF-网络应用防火墙
  15. 计算机桌面没有打字,打字为什么电脑不显示出来怎么办
  16. 外星飞船CSS3动画代码
  17. Python之freshman04
  18. CSP:重庆八中宏帆初级中学校初一编程社C2024HF700寒假集训总结——Day1
  19. 涉密计算机维修管理台账,涉密表格格台账.doc
  20. 浅谈什么是嵌入式以及嵌入式就业前景

热门文章

  1. 探讨关于Flash Player的更多线索(22.12.28更新)
  2. (震撼实拍)垃圾场里发奋学习的兄妹俩
  3. 云学智慧校园-高校信息化一体化平台 V2.0 SE-WBS排期表(初拟)
  4. 感悟生活,由一款很火的APP拼多多,想到的
  5. linux下几种目标文件的分析
  6. Scaner VS bufferedReader
  7. hexo大家博客时浏览量和访客量异常
  8. 一个设想:什么是真正的云,及利用树莓派和cloudwall打造你的真正云中心
  9. 读取本地相册 兼容了小米
  10. 数据中心(DC)核心交换机和普通交换机的区别