Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
prokopov
0 / 0 / 2
Регистрация: 19.04.2015
Сообщений: 92
#1

Некорректная реакция на касание элемента GridView - Android

19.03.2016, 17:17. Просмотров 152. Ответов 4

У меня есть адаптер и в нем обработчик касания, который во-время касания выводить текст с того элемента на котором было осуществлено действие:

Вот так выглядит мой адаптер:


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
public class GridViewAdapter extends ArrayAdapter<TaskName>{
    private final String LOG = "ADAPTER_LOG";
    private AppCompatActivity context;
    private TextView nameView, countView;
    private TaskName taskName;
 
 
    public GridViewAdapter(Context context, ArrayList<TaskName> taskNames){
        super(context, 0 , taskNames);
        this.context = (AppCompatActivity) context;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null){
            convertView = context.getLayoutInflater().inflate(R.layout.grid_view_item, null);
        }
 
        taskName = getItem(position);
        nameView = (TextView) convertView.findViewById(R.id.task_name);
        nameView.setText(taskName.getTaskName());
        countView = (TextView) convertView.findViewById(R.id.count_task);
        countView.setText(String.valueOf(taskName.getTaskNameId()));
 
        convertView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                    Log.d(LOG, nameView.getText().toString());
                    return true;
                }
                return false;
            }
        });
 
      return convertView;
    }
 
 
}

Проблема а том, что выводит всегда первую запись! Почему так происходит ? И как мне то исправить ?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2016, 17:17     Некорректная реакция на касание элемента GridView
Посмотрите здесь:

Сенсорный дисплей не правильно реагирует на касание. Сброс настроек Android
GridView Android
Android Реакция активити на событие в сервисе
Android Некорректная высота ViewPage
Некорректная работа SimpleDateFormat Android
Android Касание в EditText
Реакция на смс Android
Android Реакция кнопки на нажатие
Некорректная работа jsoup на Android Android
Копирование текста во время касание Android
Android Каким образом мультитач определяет второе и последующее касание?
Пропустить касание через окно Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
2195 / 1809 / 562
Регистрация: 12.05.2014
Сообщений: 6,446
Завершенные тесты: 1
19.03.2016, 17:46     Некорректная реакция на касание элемента GridView #2
а почему просто не повесить на гридвью?
Java
1
2
3
4
5
6
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                     //
            }
        });
prokopov
0 / 0 / 2
Регистрация: 19.04.2015
Сообщений: 92
19.03.2016, 18:07  [ТС]     Некорректная реакция на касание элемента GridView #3
Паблито, потому что он реагирует на клик, а мне нужно выполнить действие до того как будет отпущен элемент!
Я пробовал и так делать:
Java
1
2
3
4
5
6
7
8
9
10
11
 gridView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                Log.d(LOG, ((TaskName)gridView.getAdapter().getItem(i)).getTaskName());
            }
 
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
 
            }
        });

Но тогда вообще нет никакой реакции!
Паблито
2195 / 1809 / 562
Регистрация: 12.05.2014
Сообщений: 6,446
Завершенные тесты: 1
19.03.2016, 18:12     Некорректная реакция на касание элемента GridView #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Паблито Посмотреть сообщение
setOnItemClickListener
Цитата Сообщение от prokopov Посмотреть сообщение
setOnItemSelectedListener
разница есть?

но если надо именно onTouch то можно так, упрощенный код, но читать внимательно
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class GridViewAdapter extends ArrayAdapter<TaskName> implements View.OnTouchListener {
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = context.getLayoutInflater().inflate(R.layout.item, null);
        }
        convertView.setTag(position);
        convertView.setOnTouchListener(this);
        return convertView;
    }
 
 
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            int pos = Integer.valueOf(v.getTag().toString());
            // PROFIT
        }
        return false;
    }
}
Добавлено через 50 секунд
код рабочий, я все проверяю перед тем как выложить
prokopov
0 / 0 / 2
Регистрация: 19.04.2015
Сообщений: 92
19.03.2016, 18:26  [ТС]     Некорректная реакция на касание элемента GridView #5
Паблито, спасибо за помощь )))
Yandex
Объявления
19.03.2016, 18:26     Некорректная реакция на касание элемента GridView
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru