`
wangxinasy
  • 浏览: 19386 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

Android.GridView事件监听

阅读更多
或许刚学Android的朋友会觉得我这篇文章没多大用处,如果是这样的话,你可以不看。

         可能是因为一直在做Web的缘故吧,总会把Web的思想带到Android上来。Web控件是非常强大的,我曾经跟我一个朋友(从事Android开发的)诉苦:“怎么Android上连一个像样Select都没有呢?只有Text,却不能给它ID,直接获取到用户点击的索引index,然后还要手动从数据中读该索引的ID值。这也未免不过弱小了吧?”我朋友说:“这是嵌入式,你以为是什么啊~~~哪有这么强大的功能,有的话就要自己再做一层封装。体谅一下吧。”呵呵,是的,我们在做的是嵌入式手机应用系统开发。越底层,现成的功能就越少。

         就像这篇文章要提到的GridView的事件监听,题目虽是事件监听,但是我这里要介绍的关键不在于怎么实现事件监听,因为实现事件监听对于一个有基础的朋友来说,应该都懂。先看下面的代码:

GridView gridView = (GridView) findViewById(R.id.homeGrid);//获取GridView

gridView.setOnItemClickListener(this);//设置事件监听

// 初始化图片数组和文本数组
Integer[] images = new Integer[]{ R.drawable.shoppingcart1,
    R.drawable.shoppingcart2, R.drawable.shoppingcart3,
    R.drawable.shoppingcart4, R.drawable.shoppingcart5,
    R.drawable.shoppingcart6, R.drawable.shoppingcart7 };

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int idx, long arg3) {
  // TODO Auto-generated method stub
  switch (images[idx]) {
  case R.drawable.shoppingcart1:
   startActivity(new Intent(this, ChoiceCarActivity.class));//启动另一个Activity
   finish();//结束此Activity,可回收
   break;
  default:
   break;
  }
}

          上面是这一篇文章要介绍的全部代码,代码很简单。我要说明的关键点只有一个,大家看看OnItemClick()方法。这是一个事件的回调方法。跟OnClick事件不一样的事,OnClick事件传进来的是一个View,也就是用户点击的控件对象,根据这个View就可以判断用户点击了哪个对象。但是在GridView里面,因为使用同一个模板,所以无论点击哪一个格子,返回的View几乎是同一个,Id也一样。哪如何解决呢?

          请各位留心一下,OnClick和OnItemClick(),不同的是多了一个Item,这个事件一般会用在GridView和ListView这类控件中,因为这些控件都是由多个Item组成的,都需要给他们设置Adapter。所以OnItemClickListener是在AdapterView包下,而OnClickListener是在View包下。所以在使用GridView和ListVIew这类控件时,要注意监听的是OnItemClick事件,而非OnClick事件。

         从上面的代码可以看出,OnItemClick方法有四个参数传进来。到底是一些什么参数呢?

         第一个参数AdapterView,这个我也没测试出来,估计就是我们加进去的那个Adapter,就是上一篇文章所提到的SimpleAdapter。在这里作用不大。

         第二个参数View,这个应该就是点击位置的控件,但是我的GridView中不只是一个控件啊,所以这个控件作用也不大。

         第三个参数int 类型的index。这个是最重要的,这里返回的是GridView被点击的格子的索引。

         第四个参数long类型的index。这个我测试的时候,发现跟第三个参数是同一个值的,至于他们有什么区别呢?我还没深入到。唯一不同的是一个是int,另一个是long。但是我相信他们应该存在更大的区别,因为暂时没有获取到源码,所以无法深入理解。这个暂时搁浅。

         从上面的介绍可以看出,第三个参数才是我们所需要的。也就是说,当用户点击一个格子的时候,我们只需要获取这个格子的索引,然后根据我们填充格子的数据源(数组)来获取该位置的对应数据。比如说,上面的图片数组就是一个数据源,我可以根据这个index来获取到用户点击的是哪个图片,然后根据这个图片进行相应的跳转。
分享到:
评论

相关推荐

    android 充值页面效果源码.zip

    2.GridView 的最后一项是EditText ,点击的时候不能在OnItemClickListener 中监听到,通过OnFocusChangeListener 进行了监听。 3.从输入框切换到具体金额时,清除输入框的焦点clearFocus(),以便下次点击输入框时能...

    两个Fragment包含Listview和Gridview左右手势滑动切换

    本Demo的两个Fragment分别包含listview和gridview,左右滑动用GestureDetector手势监听;由于listview,gridview的滑动事件和左右滑动事件冲突,所以自定义listview和gridview让其优先执行自定义的左右滑动事件。

    gridview整页翻页的滑动,上滑和下滑

    gridview整页翻页的滑动,上滑和下滑,思路是这样的:假设gridview在3的位置,当我再次向下点击按钮的时候,整个页码翻动,翻动到6的位置,并且6是和最顶边靠齐。

    Android-DraggableGridViewPager-仿zaker效果的拖拽排序.zip

    3. 为DraggableGridViewPager设置监听器mDraggableGridViewPager.setOnPageChangeListener(new OnPageChangeListener() {//页面滚动监听 @Override public void onPageScrolled(int position, float ...

    疯狂Android讲义.part2

    3.2.2 事件和事件监听器 148 3.2.3 内部类作为事件监听器类 151 3.2.4 外部类作为事件监听器类 152 3.2.5 Activity本身作为事件监听器 153 3.2.6 匿名内部类作为事件监听器类 154 3.2.7 直接绑定到标签 155 3.3 基于...

    疯狂Android讲义.part1

    3.2.2 事件和事件监听器 148 3.2.3 内部类作为事件监听器类 151 3.2.4 外部类作为事件监听器类 152 3.2.5 Activity本身作为事件监听器 153 3.2.6 匿名内部类作为事件监听器类 154 3.2.7 直接绑定到标签 155 3.3 基于...

    CoolDragAndDrop-不规则列数的GridView上演示拖动排序效果,类似google keep.zip

    不规则列数的GridView上演示拖动排序效果,类似google keep项目地址:https://github.com/theredsunrise/AndroidCoolDragAndDropGridView效果图:如何使用:xml中创建&lt;com.theredsunrise.cooldraganddrop....

    Android AsyncTask 后监听异步加载完毕的动作详解

    Android 使用AsyncTask 后监听异步加载完毕的动作  AsyncTask 的使用方法网上有很多例子,使用起来也非常的方便。这里就不详细说具体的使用方法了,同学可以Google 一下,很多。 场景模拟  当我们在加载一个列表的...

    Android TV 焦点框移动的实现方法

    本篇文章主要介绍了Android TV 焦点框移动的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    横向滑动菜单gridview+listview

    横向滑动菜单gridview+listview 实现了动态生成横向菜单,添加监听器,并且根据点击创建不同的listview

    Android开发基于ViewPager+GridView实现仿大众点评横向滑动功能

    先给大家展示下效果图,如果大家大家感觉不错,请参考实现思路及...1,OnPageChangeListener ViewPager页面进行切换监听接口 其中我们经常要实现public void onPageSelected(int arg0),public void onPageScrolled(int

    疯狂Android讲义源码

     3.2.2 事件和事件监听器 148  3.2.3 内部类作为事件监听器类 151  3.2.4 外部类作为事件监听器类 152  3.2.5 Activity本身作为事件监听器 153  3.2.6 匿名内部类作为事件监听器类 154  3.2.7 直接绑定到标签 ...

    Android 使用AsyncTask 后监听异步加载完毕的动作

    AsyncTask的使用方法网上有很多例子,使用起来也非常的方便。...场景模拟当我们在加载一个列表的时候,比如GridView,这时候我们考虑到不阻塞UI的做法,一般会使用线程Thread、Timer或者使用AsyncTask。

    Android网格布局GridView实现漂亮的多选效果

    上一篇文章中主要讲了GridView的简单应用,以网格的形式展示了一些图片,对于图片也有点击监听操作。但是,如果我们在浏览图片的时候需要一些选中操作、甚至是多选操作的时候。这样的功能我们又该如何实现呢? 可以...

    精通ANDROID 3(中文版)1/2

    6.4.2 GridView控件  6.4.3 Spinner控件  6.4.4 Gallery控件  6.4.5 创建自定义适配器  6.4.6 Android中的其他控件  6.5 样式和主题  6.5.1 使用样式  6.5.2 使用主题  6.6 布局管理器  6.6.1 ...

    Android-流畅的显示截取视频流帧图片列表

    现在有一个需求:做一个服务器传过来一堆的.mp4播放链接,需要截取每个视频中的一帧,用来展示在列表上。 优化方面如下 ...5. 做了ListView、GridView、RecyclerView的滑动监听,减少重复代码,降低操作步骤。

    Android简易自定义日历

    用Gridview写的简易android日历模块,可在android studio里import使用,方便自定义样式和其他需求更改。支持日期选择和特定日期的标识,还有对应的监听方法,欢迎下载。

    Android自定义View实现可以拖拽的GridView

    1、监听触碰事件 2、用WindowManager添加拖曳的图片 3、用Collections.swap()交换List数据 自定义代码: public class DragGridVeiw extends GridView { private final int PRESS_TIME = 1000;//长按时间 ...

    android监听View加载完成的示例讲解

    通过百度得知View有一个监听函数,亲测使用有效,特此记录,方便日后查阅。 gv_test.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void ...

Global site tag (gtag.js) - Google Analytics