2014-11-25 1 views
1

나는 데이터베이스에있는 항목의 수에 따라 linearLayout을 사용하여 목록을 만들고 TextViews를 추가하고 있습니다. 문제는 목록에서 왼쪽으로 스 와이프 할 때 항목을 삭제할 수 있기를 원합니다. 나는 당신이 스 와이프하는 요소 (보기)를 얻는 방법을 궁금해하고 있었습니까? 다음은 TextView를 추가하기 위해 얻은 코드입니다.안드로이드에 대한 스 와이프 (onFling) 요소의 getView?

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

이 샘플 응용 프로그램을 참조 할 수 있습니다. Swipe_To_Delete ListView를 사용하여 db에서 가져온 데이터 항목을 나열 할 수 있습니다. 그런 다음 예제의 MainActivity에서 getSwipeItem() 메소드를 다음과 같이 수정하십시오.

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

okey 그래서 약간 수정하고 대신 ArrayAdapter를 변경하여 TextViews를 가져 와서 사용자 정의 텍스트 뷰를 표시해야합니다. 하지만 이제는 "androidWidget.TextVieW [15234fdxf3]"과 같은 것을 추가합니다. listView의 요소로 textViews를 추가하지만 제목 만 표시하는 방법이 있습니까? – Clanket

+0

많은 변화가 있었지만 지금은 앞으로 나아갈 것입니다. 확실히 올바른 길로 나를 인도 했으므로 이것을 유용하다고 생각합니다! – Clanket

+0

고맙습니다. – jstn

관련 문제