因为项目需要,本人自定义了一个ExpandableLsitView,由于项目中需要获取到groupItem的点击事件和长按事件,childItem的点击事件、长按事件、滑动(onTouchEvent)事件;于是,我又写了一些借口回调;代码如下:
处理各种事件的代码:
于是问题就出来了,我要获取带groupPosition和childPosition,然后传值到事件监听中的方法中,试了好几种方式,获取不到,于是用“-1”代替了。大家帮我想想办法?或者有做过类似的请分享一下!
/** */
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”代替了。大家帮我想想办法?或者有做过类似的请分享一下!