我试图为listview中的每个项目添加touchlistener。 这里是我的CustomAdapter for currentView中的代码(我认为)
rowView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
x1 = event.getX();
return true;
case MotionEvent.ACTION_UP:
x2 = event.getX();
float deltaX = x2 - x1;
if (Math.abs(deltaX) > MIN_DISTANCE) {
if (x2 > x1) {
LEFT = false;
Logger.e("FALSE ");
txtTitle.setText("LEFT TO RIGHT");
moveLefttoRight = new TranslateAnimation(0, -150, 0, 0);
moveLefttoRight.setDuration(1500);
moveLefttoRight.setFillAfter(true);
swipeLayout.setAnimation(moveLefttoRight);
HomeChatAdapter.super.notifyDataSetChanged();
}
else {
LEFT = true;
Logger.e("TRUE");
txtTitle.setText("RIGHT TO LEFT");
moveLefttoRight = new TranslateAnimation(0, -150, 0, 0);
moveLefttoRight.setDuration(1500);
moveLefttoRight.setFillAfter(true);
swipeLayout.setAnimation(moveLefttoRight);
}
} else {
CLICKITEM = true;
return false;
}
break;
}
return false;
}
});
动画和view.setText(“blabla”)的问题 当我从左到右或从右到左完成滑动时 屏幕上没有变化 如果我搬出去 txtTitle.setText(“LEFT TO RIGHT”);
moveLefttoRight = new TranslateAnimation(0, -150, 0, 0);
moveLefttoRight.setDuration(1500);
moveLefttoRight.setFillAfter(true);
swipeLayout.setAnimation(moveLefttoRight);
来自TouchListener的这部分代码 - 完全没问题但是在创建时它的工作一次。 在这种情况下,有什么可以帮我解决问题的方法吗? 只想将列表视图中的项目向左或向右移动。关注彼得。
答案 0 :(得分:2)
如果我正确理解您的问题,您想使用
swipeLayout.startAnimation(...);
代替。
根据setAnimation vs startAnimation in android:
setAnimation
设置要为此视图播放的下一个动画。但是视图动画可以 尚未开始。
startAnimation
如果您想立即播放动画,请使用startAnimation。 该方法允许对开始时间进行细粒度控制 和失效,但你必须确保
1)动画设置了开始时间,
2)假设动画时视图无效 启动。