如何自定义ExpandableLsitView的事件监听?

因为项目需要,本人自定义了一个ExpandableLsitView,由于项目中需要获取到groupItem的点击事件和长按事件,childItem的点击事件、长按事件、滑动(onTouchEvent)事件;于是,我又写了一些借口回调;代码如下:
/**  */
public interface RespondLongClickListener {

public void respondLongClick(AnimatedExpandableListView listview,
View view, int groupPosition, int childPosition);
}

public interface RespondClickListener {

public void respondClick(AnimatedExpandableListView listview,
View view, int groupPosition, int childPosition);

}

public interface RespondTouchListener {

public void respondTouch(AnimatedExpandableListView listview,
View view, int groupPosition, int childPosition, int level);
}

public void setLongClickListener(RespondLongClickListener longClickListener) {
this.longClickListener = longClickListener;
}

public void setClickListener(RespondClickListener clickListener) {
this.clickListener = clickListener;
}

public void setTouchListener(RespondTouchListener touchListener) {
this.touchListener = touchListener;
}


处理各种事件的代码:
@Override
public boolean onTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
position();
float x = ev.getX();
float y = ev.getY();

int screenWidth = screenWidth() / 10;
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:

downX = (int) x / screenWidth;

mTouchPosition = pointToPosition((int) x, (int) y);

break;
case MotionEvent.ACTION_UP:

upX = (int) x / screenWidth;

downTime = ev.getDownTime();
eventTime = ev.getEventTime();

if (downX == upX && eventTime - downTime < 500) {

if (clickListener != null) {

clickListener.respondClick(listview, mView, -1, -1);
}

}

if (downX == upX && eventTime - downTime > 500) {

if (longClickListener != null) {

longClickListener.respondLongClick(listview, mView, -1, -1);
}

}
break;
case MotionEvent.ACTION_MOVE:

currentX = (int) x / screenWidth;

downTime = ev.getDownTime();
eventTime = ev.getEventTime();

if (currentX != downX) {

if (distance != Math.abs(currentX - downX)) {

if (touchListener != null) {

touchListener.respondTouch(listview, mView, -1, -1,
distance);

}
}
distance = Math.abs(currentX - downX);
}
break;

}
return super.onTouchEvent(ev);
}


于是问题就出来了,我要获取带groupPosition和childPosition,然后传值到事件监听中的方法中,试了好几种方式,获取不到,于是用“-1”代替了。大家帮我想想办法?或者有做过类似的请分享一下!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值