Итак, у меня есть макет таблицы, в каждой строке у меня есть setOnTouchListener с классом, который позволяет мне обнаруживать смахивание в строках, он уже обнаруживает это, но я пытаюсь сделать это, когда человек меняет строку , строка удалена, я пробовал несколько вещей, но я думаю, что мне нужно получить представление в другом классе, чтобы получить индекс строки.
У меня есть экземпляр моего глобального класса Swipe как:
ActivitySwipeDetector activitySwipeDetector = new ActivitySwipeDetector(this);
Всякий раз, когда я создаю строку, я просто добавляю: tr.setOnTouchListener(activitySwipeDetector);
tr быть строкой
А вот ActivitySwipeDetector, прокомментированная часть - это то, что я пытался сделать:
public class ActivitySwipeDetector implements View.OnTouchListener {
static final String logTag = "ActivitySwipeDetector";
private Activity activity;
static final int MIN_DISTANCE = 100;
private float downX, downY, upX, upY;
Invoices invoices = new Invoices();
NavManager nav = new NavManager();
public ActivitySwipeDetector(Activity activity){
this.activity = activity;
}
public void onRightSwipe(){
System.out.println("Swiped Correctly from Right to Left");
int index = (int)nav.getCurrentFocus().getTag();
invoices.data.remove(index);
System.out.println("Eliminado Correctamente");
}
public void onLeftSwipe(){
}
public void onDownSwipe(){
}
public void onUpSwipe(){
}
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN: {
downX = event.getX();
downY = event.getY();
return true;
}
case MotionEvent.ACTION_UP: {
upX = event.getX();
upY = event.getY();
float deltaX = downX - upX;
float deltaY = downY - upY;
// swipe horizontal?
if(Math.abs(deltaX) > Math.abs(deltaY))
{
if(Math.abs(deltaX) > MIN_DISTANCE){
// left or right
if(deltaX > 0) { this.onRightSwipe(); return true; }
if(deltaX < 0) { this.onLeftSwipe(); return true; }
}
else {
Log.i(logTag, "Horizontal Swipe was only " + Math.abs(deltaX) + " long, need at least " + MIN_DISTANCE);
return false; // We don't consume the event
}
}
// swipe vertical?
else
{
if(Math.abs(deltaY) > MIN_DISTANCE){
// top or down
if(deltaY < 0) { this.onDownSwipe(); return true; }
if(deltaY > 0) { this.onUpSwipe(); return true; }
}
else {
Log.i(logTag, "Vertical Swipe was only " + Math.abs(deltaX) + " long, need at least " + MIN_DISTANCE);
return false; // We don't consume the event
}
}
return true;
}
}
return false;
}
Заранее спасибо, я был бы очень признателен, по крайней мере, за несколько идей о том, что делать!
* Редактировать: таблица заполнена данными: ArrayList