Обнаружение смахивания для каждой строки списка

У меня есть список видео, находящихся на sd-карте. На данный момент мне просто нужна помощь в создании жестов или обнаружении смахивания для каждой строки в представлении списка. Благодаря этому вопросу в stackoverflow Обнаружение жеста перелистывания в макете сетки я реализовал жест в представлении списка . Теперь он легко определяет, когда пользователь смахивает вправо или влево. Но этот жест предназначен для всего списка. Я просто хочу знать, как я могу реализовать это обнаружение смахивания для отдельных строк. Например, приложение теперь создает тост, который печатает «Смахивание вправо», «Смахивание влево». Я просто хочу сделать это как «Проведите вправо по строке № 1», «Смахните влево по строке № 3» и т. Д. Надеюсь, мой вопрос был ясен.

С нетерпением жду полезных ответов. Спасибо


person Farhan Khurshid    schedule 06.07.2011    source источник
comment
Вы пробовали реализации ListView смахивания, предложенные [здесь] [1]? [1]: stackoverflow.com/questions/4373485/ android-swipe-on-list /   -  person Asaf Pinhassi    schedule 31.05.2012


Ответы (6)


Загляните в этот ответ и используйте pointToPosition внутри события onFling

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
    try {
        Toast.makeText( listAdapter.getItem( listView.pointToPosition(Math.round(e1.getX()), Math.round(e1.getY())).toString());
        return super.onFling();
    } catch( Exception e ) {
        // do nothing
    }
}
person Nerijus Gedrimas    schedule 16.08.2012

В своем решении я использую подход по каждому элементу - посмотрите здесь Моя Код обнаружения смахивания может немного отличаться от стандартного обнаружения смахивания, но у меня он отлично работает. И я использую прикрепленные теги, чтобы получить данные, относящиеся к элементу. Надеюсь, это поможет, но если у вас есть вопросы, просто дайте мне знать, и я постараюсь объяснить более подробно.

person MariuszP    schedule 06.12.2011

В соответствии с моим мнением для элемента используется логическое значение, при касании этого элемента устанавливается значение true, используя onTouchListener,

ListItem.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View arg0, MotionEvent event) {
            click=true;
            return click;


        }

    });`

Тогда вы можете отменить это:

 @Override
public boolean dispatchTouchEvent(MotionEvent ev){
super.dispatchTouchEvent(ev);
Log.v("Inside", "=====Dispatch Event===");
if(click){
    Log.v("Inside", "=====Dispatch Event=T==");
    click=false;
     return gestureDetector.onTouchEvent(ev);

}else{
    return false;
}

}
person Surej    schedule 17.01.2012

Я думаю, что вы ищете SwipeView (или, возможно, даже ViewFlow), а не стандартное обнаружение жестов Android.

person Reinier    schedule 06.07.2011
comment
SwipeView или ViewFlow лучше всего использовать в тех случаях, когда у нас разные представления. У меня есть один listView с несколькими элементами, отображаемыми на одной странице. Я просто хочу получить жест смахивания для каждой отдельной строки .. Любые другие предложения ?? - person Farhan Khurshid; 06.07.2011

Это старый вопрос, но, к счастью, Джейк Уортон перенес сюда некоторый код, выпущенный для ICS; это должно позволить вам пролистывать отдельные строки: https://github.com/JakeWharton/SwipeToDismissNOA

person Oleg Vaskevich    schedule 02.01.2013

Мы реализовали обнаружение смахивания для каждой строки для выявления действий и отклонения элементов здесь https://github.com/47deg/android-swipelistview. Я надеюсь, что это помогает

person Raúl Raja Martínez    schedule 06.03.2013