Форум программистов, компьютерный форум, киберфорум
Наши страницы

Обработка свайпа в ListView - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Кто чем пользуется для разработки приложений под Андроид? http://www.cyberforum.ru/android-dev/thread1066401.html
Всем доброго времени суток! Вопрос немного нубный, но тем не менее... Хотел бы начать разрабатывать ПО под Андройд. Вроде взял хорошую книгу П. Дейтела "Android для программистов Создаём...
Программирование Android Шаринг Facebook Привет. Помогите с шарингом Facebook. Как сделать авторизацию. Где должен быть app id? http://www.cyberforum.ru/android-dev/thread1066189.html
Программирование Android Правильное закрытие курсора
Как правильно закрыть Cursor? Если делать так: .... String from = {"name","count"}; intto ={R.id.backpack_text_1, R.id.backpack_text_2}; Cursor AllData = databaseHelper.getData("coil");...
Запомнить координаты прокрутки списка Программирование Android
В Activity1 список ListView обновляется в onResume(). При выборе элемента списка открывается Activity2, в котором отображается выбранный объект. Также на Activity1 есть возможность создать новый...
Программирование Android Возможно ли сделать анимацию под темп музыки? http://www.cyberforum.ru/android-dev/thread1066049.html
Возможно ли сделать скорость анимации под темп играющей музыки в этом приложении?
Программирование Android Обфускация на Eclipse. Какова последовательность действий Кто делал обфускацию на Eclipse - опишите последовательность ваших действий. Добавлено через 1 час 8 минут Интересуют проблемы с которыми стыкались при обфускации и их решение. Буду благодарен за... подробнее

Показать сообщение отдельно
Severomor1
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 36

Обработка свайпа в ListView - Программирование Android

09.01.2014, 10:28. Просмотров 2807. Ответов 1
Метки (Все метки)

Добрый день,
Мне нужно сделать удаление элементов из ListView по свайпу. Делаю так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
lv.setOnTouchListener(new View.OnTouchListener() {
            float x1 = Float.NaN, y1 = Float.NaN, x2=Float.NaN, y2=Float.NaN;
            static final int delta=40;
            //int ItemPosition;
 
            @Override
            public boolean onTouch(View view, MotionEvent event) {
                switch (event.getAction()){
                    case MotionEvent.EDGE_LEFT:
                        BottomSwipeDetected=true;
                        break;
 
                    case MotionEvent.ACTION_DOWN:
                        x1=event.getX();
                        y1=event.getY();
                        return false;
 
 
                    case MotionEvent.ACTION_UP:
                        x2=event.getX();
                        y2=event.getY();
                        itemPosition=lv.pointToPosition((int) x2, (int) y2);
                        LeftSwipeDetected=false;
                        RightSwipeDetected=false;
                        if (x2-x1>delta){
                            RightSwipeDetected=true;
 
                         //   return false;
                        }
                        else if (x1-x2>delta){
                            LeftSwipeDetected=true;
 
                         //   return false;
                        }
 
                    default:
                        return false;
                }
                return false;
            }
 
        });
 
@Override
    protected void onListItemClick(ListView lv, View v, int position, long id){
 
        if (LeftSwipeDetected){
            //Toast.makeText(this,"Left Swipe Detected", Toast.LENGTH_LONG).show();
            Animation animation= AnimationUtils.loadAnimation(this, R.anim.left_swipe_anim);
            animation.setAnimationListener(new SwipeAnimationListener(position));
            v.startAnimation(animation);
            LeftSwipeDetected=false;
        }
        else if (RightSwipeDetected){
            Intent intent=new Intent(this, Edit.class);
            startActivityForResult(intent, ADD_CODE);
            overridePendingTransition(R.anim.swipe_new_activity,R.anim.alfa_old_activity);
        }
 
        else {
            itemPosition=position;
            String txt=list.get(itemPosition).Text;
            Intent intent=new Intent(this, Edit.class);
            intent.putExtra("text",txt);
            startActivityForResult(intent, EDIT_CODE);
        }
 
    }
В принципе, оно работает. Но как то туго. Через раз или через два. То есть если просто слегка мазнуть пальцем по экрану (как в клиенте гуглопочты например) - то onListItemClick не срабатывает. Надо нормально так нажать пальцем на элемент списка и провести - тогда сработает. onTouchListener работает без проблем. Хотел было в нем сделать вызов анимации и удаление айтема - но не знаю, как в нем получить ссылку на конкретный View, по которому делается свайп. Посоветуйте, как быть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru