#java #android
#java #Android
Вопрос:
Может ли кто-нибудь указать мне пример прослушивателя щелчков по элементу, используемого для просмотра списка с базовым адаптером?
Мой просмотр списка содержит два текстовых представления и флажок. Я хочу создать прослушиватель щелчков по элементу, чтобы при нажатии элемента (или строки) он устанавливал флажок соответствующей строки.
Я попытался погуглить, но не смог найти никаких примеров этого
Спасибо
Ответ №1:
Итак, адаптер на самом деле не имеет значения, но я считаю, что то, что вы пытаетесь сделать, довольно просто, сначала вам нужно получить ссылку на ваш ListView
, который я буду называть listView
после настройки вашего адаптера вы можете использовать setOnItemClickListener
для создания действия щелчка,
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public boolean onItemClick(AdapterView<?> parent, View view, int position, long id) {
//here you can use the position to determine what checkbox to check
//this assumes that you have an array of your checkboxes as well. called checkbox
checkBox[position].setChecked(!checkBox.isChecked());
}
});
Комментарии:
1. Спасибо. Я реализовал это и получил всплывающее окно для отображения позиции элемента. Не могли бы вы объяснить этот массив флажков? Проблема, с которой я сталкиваюсь сейчас, заключается в переносе выбранного элемента для установки флажка в строке
2. конечно, я был вдали от своего компьютера в течение нескольких часов, но, надеюсь, это все еще полезно, всякий раз, когда вы создаете свои флажки, если это в коде, сохраняйте ссылку на них в массиве, если это в XML, вам придется делать
findViewById
для каждого из них. Если вам нужна дополнительная информация, я могу проверить утром.
Ответ №2:
На самом деле это довольно просто, после выполнения действия «setAdapter» вы должны сделать это:
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), "You click on position:" position, Toast.LENGTH_SHORT).show();
}
});
Комментарии:
1. Также как поджарить соответствующее значение столбца?, Вот только позиция тостов, затем как поджарить значение этого позиционированного столбца
Ответ №3:
Следующий код работает правильно:
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,
View view, int position, long id) {
Toast.makeText(getApplicationContext(),
"You click on position:" position, Toast.LENGTH_SHORT).show();
}
});
Но когда я нажал items
, он переходит к другим действиям. Что мне делать?
Комментарии:
1. Я не думаю, что это ответ, но я не уверен.
Ответ №4:
Вы можете получить доступ ко всем элементам вашей строки listview, используя параметр View метода onItemClick(). например
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,
View view, int position, long id) {
// second parameter View view entire row object that is clicked - in your case
// two text views and the checkbox
// supposing your checkbox is set up with an id in the xml as idchkbox
// You can access it by findview by id and set it true or false;
android.widget.CheckBox chkbox = view.findViewbyId(R.id.idchkbox);
chkbox.setChecked = true;
return;
});
Комментарии:
1. Пожалуйста, также попытайтесь объяснить свое решение