为了账号安全,请及时绑定邮箱和手机立即绑定

在手势监听的按下判断时候isRemark = true;报错

这是前面定义的变量:

//标记,当前是在listview的最顶端按下
boolean isRemark;
//按下时的Y值
int startY;

报错截图:

http://img1.sycdn.imooc.com//59a828090001483b07360423.jpg

当我把这行删掉之后,又发现下面也报错了:

http://img1.sycdn.imooc.com//59a828330001045e06330350.jpg

很简单的变量赋值,为什么会报错呢?更奇怪的是,第一张图的中的两行只有第一行会报错,删掉之后第二行又报错了,希望得到答复,谢谢了。

附上全部代码:

package top.omooo.admin.mybaseadapterpractice;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ListView;

/**
* Created by Omooo on 2017/8/31.
*/

public class ReFreshListView extends ListView implements AbsListView.OnScrollListener{
   //顶部布局文件
   View header;
   //顶部布局文件的高度
   int headerHeight;
   //当前第一个可见的item的位置
   int firstVisibleItem;
   //标记,当前是在listview的最顶端按下
   boolean isRemark;
   //按下时的Y值
   int startY;
   public ReFreshListView(Context context) {
       super(context);
       initView(context);
   }

   public ReFreshListView(Context context, AttributeSet attrs) {
       super(context, attrs);
       initView(context);
   }

   public ReFreshListView(Context context, AttributeSet attrs, int defStyleAttr) {
       super(context, attrs, defStyleAttr);
       initView(context);
   }
   //初始化界面,添加顶部布局文件到listview中
   private void initView(Context context) {
       LayoutInflater inflater = LayoutInflater.from(context);
       header = inflater.inflate(R.layout.list_header, null);
       measureView(header);
       headerHeight=header.getMeasuredHeight();
       Log.i("2333---headerHeight", "headerHeight= "+headerHeight);
       topPadding(-headerHeight);
       //添加到ListView中
       this.addHeaderView(header);
       this.setOnScrollListener(this);
   }
   //设置header的上边距
   private void topPadding(int topPadding) {
       header.setPadding(header.getPaddingLeft()
               , topPadding
               , header.getPaddingRight()
               , header.getPaddingBottom());
   }
   //通知父布局占用的宽和高
   private void measureView(View view) {
       ViewGroup.LayoutParams params = view.getLayoutParams();
       if (params == null) {
           params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                   ViewGroup.LayoutParams.WRAP_CONTENT);
       }
       int width = ViewGroup.getChildMeasureSpec(0, 0, params.width);
       int height;
       int tempHeigth = params.height;
       if (tempHeigth > 0) {
           height = MeasureSpec.makeMeasureSpec(tempHeigth, MeasureSpec.EXACTLY);
       } else {
           height = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
       }
       view.measure(width,height);
   }

   @Override
   public void onScrollStateChanged(AbsListView absListView, int i) {

   }

   @Override
   public void onScroll(AbsListView absListView, int i, int i1, int i2) {
       this.firstVisibleItem = i;
   }
   //手势监听

   @Override
   public boolean onTouchEvent(MotionEvent ev) {
       return super.onTouchEvent(ev);
       switch (ev.getAction()) {
           case MotionEvent.ACTION_DOWN:
               if (firstVisibleItem == 0) {


                   startY = (int) ev.getY();
               }
       }
   }

}

正在回答

1 回答

return super.onTouchEvent(ev);

把这行代码放到最后一行就可以了。先执行自己想要的逻辑,最后执行父类的方法。

1 回复 有任何疑惑可以回复我~
#1

Omooo 提问者

你说的很对,我忘了更新问题了,嘻嘻。
2017-09-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android的ListView下拉刷新
  • 参与学习       44049    人
  • 解答问题       130    个

本课程就分享一个Android实现ListView下拉刷新功能的技巧

进入课程

在手势监听的按下判断时候isRemark = true;报错

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号