Android: Преобразование onItemClick в OnClickListener

#android

#Android

Вопрос:

Ранее у меня был этот метод onItemClick, который позволяет пользователю щелкнуть строку в listview и приводит к новому действию, принося некоторые атрибуты (тексты, изображения) в новое действие

 public void onItemClick(AdapterView<?> l, View v, int position, long id) {
        Intent listIntent = new Intent(this, DetailsActivity.class);
        listIntent.putExtra("spendino.de.ProjectDetail.position",position);
        listIntent.setData(Uri.withAppendedPath(Uri.withAppendedPath(
                Provider.CONTENT_URI, Database.Project.NAME), Long
                .toString(id)));
        startActivity(listIntent);

    }
  

Но теперь я только что внедрил ‘View’ в свой CursorAdapter. Это невозможно реализовать onItemClick в макете строк, что я могу сделать, это реализовать onClick для него. Но у меня возникли проблемы с преобразованием содержимого метода из моего предыдущего onItemClick в OnClickListener .
Мне нужно, чтобы метод вел себя так же, как мой предыдущий onItemClick.

Потому что мне нужно объявить некоторые атрибуты, такие как position и id, которые недоступны в этом методе.

 convertView.setOnClickListener(new OnClickListener() {
                 public void onClick(View view) {


                 }
                });
  

Поэтому мне нужно, чтобы OnClickListener метод вел себя так же, как мой предыдущий OnItemClick .

Ответ №1:

Вы все равно должны иметь возможность обрабатывать событие click с помощью прослушивателя onItemClick. Убедитесь, что ничто в вашем представлении не перехватывает и не обрабатывает событие click. Установите для clickable значение false, чтобы событие click заполнялось по цепочке и перехватывалось обработчиком onItemClick.

Комментарии:

1. Я понятия не имею, что делать с «длинным идентификатором», который у меня был в onItemClick, когда я внедряю тот же код в свой OnClickListener, он запрашивает меня об этом, иначе он выдает мне ошибку. Можете ли вы мне помочь, возможно, предоставив код, основанный на том, что у меня есть? Спасибо