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

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

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

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

19.03.2016, 17:17. Просмотров 196. Ответов 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;
    }
 
 
}

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

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

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

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

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

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

Реакция на выбор элемента в CheckedListBox - C#
Есть checkedListBox в котором есть элементы. Как сделать так что бы когда выбраный первый элемент к перименой добавлялось 30? п. с....

4
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,066
Завершенные тесты: 1
19.03.2016, 17:46 #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) {
                     //
            }
        });
0
prokopov
0 / 0 / 2
Регистрация: 19.04.2015
Сообщений: 92
19.03.2016, 18:07  [ТС] #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) {
 
            }
        });

Но тогда вообще нет никакой реакции!
0
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,066
Завершенные тесты: 1
19.03.2016, 18:12 #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 секунд
код рабочий, я все проверяю перед тем как выложить
1
prokopov
0 / 0 / 2
Регистрация: 19.04.2015
Сообщений: 92
19.03.2016, 18:26  [ТС] #5
Паблито, спасибо за помощь )))
0
19.03.2016, 18:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2016, 18:26
Привет! Вот еще темы с ответами:

Хэш-массивы - некорректная проверка на существование элемента - Perl
Всем доброго времени суток! такая проблема: %hash = ( 'start' =&gt; 'a', 'a' =&gt; 'b', 'b' =&gt; 's', 's' =&gt; '' ); print...

Как создать вкладки для элемента GridView - C# ASP.NET
Для web-формы , создаю элемент GridView , нужно чтобы в этой будем так называть таблице было несколько вкладок (закладок) ,как это сделать...

Отображение данных в GridView при выборе элемента списка - C# ASP.NET
Есть listBox, при изменении значения в котором должно меняться наполнение GridView (поиск с параметром) Когда выбираю что-то в listBox,...

Изменение текста в TextBox элемента в GridView при клике мышью - C# WPF
Здравствуйте, господа. Есть у меня GridView, который заполняется из файла json. У элемента есть определенные текстбоксы, куда выводится...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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