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

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

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

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

19.03.2016, 17:17. Просмотров 164. Ответов 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
Посмотрите здесь:

Касание в EditText - Программирование Android
Подскажите пожалуйста, как можно обработать касание в EditText. Нужно при касании менять цвет, но не знаю как правильно вызвать обработчик...

Копирование текста во время касание - Программирование Android
Как сделать так чтобы по нажатию на текста, текст копировался в буфер обмена?(на Android Studio)

Пропустить касание через окно - Программирование Android
Делаю приложение которое будет в Service отлавливать события. Использую WindowManager для создания прозрачного окна в Service.Можно ли...

Каким образом мультитач определяет второе и последующее касание? - Программирование Android
Уважаемы форумчане, есть какое то объяснение по такому вопросу? Каким образом мультитачь определяет второе и последующее касание? ...

Сенсорный дисплей не правильно реагирует на касание. Сброс настроек - Программирование Android
Здравствуйте у меня имеится телефон Hero H8 китаец игрался им сбросил настройки после перезагрузки надо было прокалибровать телефон а я...

Реакция на смс - Программирование Android
Всем привет! Ребята спасайте, срочно нужно написать приложение на андроид, чтобы происходила определенная реакция на смс, в данном случае...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2456 / 1901 / 591
Регистрация: 12.05.2014
Сообщений: 6,710
Завершенные тесты: 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) {
 
            }
        });

Но тогда вообще нет никакой реакции!
Pablito
2456 / 1901 / 591
Регистрация: 12.05.2014
Сообщений: 6,710
Завершенные тесты: 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 секунд
код рабочий, я все проверяю перед тем как выложить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2016, 18:26     Некорректная реакция на касание элемента GridView
Еще ссылки по теме:

Реакция кнопки на нажатие - Программирование Android
Стандартная кнопка визуально реагирует на нажатие. А когда изменяешь фон кнопки, то всякая визуальная реакция исчезает. Как-то можно это...

Реакция активити на событие в сервисе - Программирование Android
Здравствуйте. Есть следующая задача, решение которой мне найти не удалось (а может гуглил плохо): Предположим есть некая активити, на...

Некорректная работа SimpleDateFormat - Программирование Android
Имеем дату в виде строки и желаемый формат даты. DateFormat format = new SimpleDateFormat(&quot;dd.MM.yyyy&quot;); String...

Некорректная высота ViewPage - Программирование Android
&lt;android.support.v4.view.ViewPager android:id=&quot;@+id/pager&quot; android:layout_width=&quot;match_parent&quot; ...

Некорректная работа jsoup на Android - Программирование Android
Здравствуйте! Подскажите, с чем может быть связана следующая проблема. Есть парсер html с использованием jsoup. Отрабатывает корректно,...

GridView - Программирование Android
Здравствуйте, подскажите где посмотреть пример для прокрутки грида в горизонтальном направлении, если не умещается все ячейки на экран. И...


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

Или воспользуйтесь поиском по форуму:
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