Android: На элементе нажмите прослушиватель для реализации базового адаптера просмотра списка

#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. Пожалуйста, также попытайтесь объяснить свое решение