你正在为Android浏览(onFling)的元素的getView?

时间:2014-11-25 11:33:12

标签: java android textview ontouchlistener onfling

我正在使用linearLayout创建一个列表,并根据我在数据库中获得的项目添加TextViews。问题是我希望能够在列表中向左滑动时删除项目。我只是想知道如何获得你正在刷的元素(视图)?这是我添加TextView的代码。

for(int i = 0; i < nrOfTodos; i++) {
        TextView v = new TextView(this);
        String title = todos.get(i).getTitle();
        System.out.println(title);
        v.setText(title);
        v.setHeight(listItemSize);
        v.setAllCaps(true);
        v.setTextColor(Color.parseColor("#FFD9A7"));
        v.setTextSize(listItemSize/6);
        v.setHorizontallyScrolling(false);
        v.setMaxLines(1);
        v.setEllipsize(TruncateAt.END);
        v.setPadding(30, 50, 0, 0);
        v.setId(i);
        todoViews.add(v);
        v.setOnTouchListener(new OnSwipeTouchListener(this) {
            @Override
            public void onSwipeLeft() {
                /*
                 * 
                 * 
                 * TODO!!! NEXT PART OF MY PLAN TO WORLD DOMINATION!
                 * 
                 * 
                 */
            }
        });
        if(i%2 == 1) {
            v.setBackgroundColor(Color.parseColor("#11FFFFFF"));
        }
        ll.addView(v, i);                       
    }

我也有这个

public class OnSwipeTouchListener implements OnTouchListener {

private final GestureDetector gestureDetector;

public OnSwipeTouchListener(Context context) {
    gestureDetector = new GestureDetector(context, new GestureListener());
}

public void onSwipeLeft() {
}

public void onSwipeRight() {
}

public boolean onTouch(View v, MotionEvent event) {
    return gestureDetector.onTouchEvent(event);
}

private final class GestureListener extends SimpleOnGestureListener {

    private static final int SWIPE_DISTANCE_THRESHOLD = 50;
    private static final int SWIPE_VELOCITY_THRESHOLD = 10;

    @Override
    public boolean onDown(MotionEvent e) {
        //always return true since all gestures always begin with onDown and <br>
        //if this returns false, the framework won't try to pick up onFling for example.
        return true;
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        float distanceX = e2.getX() - e1.getX();
        float distanceY = e2.getY() - e1.getY();
        if (Math.abs(distanceX) > Math.abs(distanceY) && Math.abs(distanceX) > SWIPE_DISTANCE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
            if (distanceX > 0)
                onSwipeRight();
            else
                onSwipeLeft();
            return true;
        }
        return false;
    }
}
}

但是我无法弄清楚如何实际获取视图,获取titletext并将其从数据库中删除(我可以从数据库中删除,但我无法获取哪些项目被刷过^^ )。 任何想法将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以参考此示例应用Swipe_To_Delete 您可以使用ListView列出从db获取的数据项。 然后修改示例的MainActivity中的getSwipeItem()方法,如下所示。

@Override
public void getSwipeItem(boolean isRight, int position) {
    [List_Of_Items].remove(position);
    [Your_Adapter].notifyDataSetChanged();
}