再谈谈ListView

    ListView这个控件可谓是用处多多,最近使用ListView遇到了一些问题,在解决之后一来想留个记录,二来想分享一下我的问题,在大家遇到后能够快速解决。

    功能说明:

    实现多个版面的滑动显示,同时多个版面中的ListView中Item要能够响应点击并跳转至显示详细信息的Activity中。

    难点:

    ①滑动显示时,在ListView中的滑动效果会被本身的Item点击效果所遮盖,从而只能在离开ListView的地方进行滑动操作,这个问题有许多中解决方案,但最简单的就是在Activity中重写dispatchTouchEvent()方法,如下所示:

// 重写这个方法实现在ListView中滑动切换View
 @Override
 public boolean dispatchTouchEvent(MotionEvent ev) {
  // TODO Auto-generated method stub
  this.mGestureDetector.onTouchEvent(ev);
  
  return super.dispatchTouchEvent(ev);
 }

很简单的解释就是在“分发触摸事件”处理中,先处理手势左右滑动的事件响应,再去处理父类的事件处理响应(对于Button的处理与之相同)。

        ②从一组View滑动至另一组时ListView中的内容显示不出来。我之前一直使用的是直接从ListActivity中继承,这样就使得我的布局文件中对ListView控件的id属性只能有一种写法:android:id="@id/android:list"。即不能给ListView控件加上能够在“.java”文件中被引用的id,这样使得滑动显示的ListView中没有内容。这个问题可以这样解决:

直接继承Activity,然后在Activity中定义ListView的对象,在xml文件中给出ListView控件的id,在“.java”文件中绑定一下,其他操作与之前没有多大区别,在最后设置监听时要采用如下的方法:

listView.setOnItemClickListener(new OnItemClickListener(){

   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub
    switch((int)arg3){
    case 0:
     intent.putExtra("title", getString(R.string.ti_frnew01));
     intent.putExtra("txt", getString(R.string.frnew01));
     intent.setClass(FrontPage.this, DetailNew.class);
     startActivity(intent);
     break;

    // 省略......

     }

  }

}

这样就实现了对Item点击的监听,而arg3所对应的就是id。

这样问题就解决了,既能够在ListView或Button中实现滑动,也能使得滑动过去的版面中的ListView中有内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值