2016-10-27 2 views
0

У меня есть список с элементами. У каждого предмета есть chekbox. Теперь, если элемент щелкнут, я хочу изменить состояние этого флажка. Как я могу получить идентификатор флажка при щелчке элемента списка?Получить идентификатор флажка внутри элемента списка в OnItemClick listener

Я получил этот код:

cList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3) { 
       Client currentClient = (Client) mAdapter.getItem(position); 

      } 
     }); 
+0

Какая ошибка регистрируется? –

+0

@AmitaiFensterheim У меня нет ошибки. – progNewbie

+1

Какова цель получения идентификатора флажка? Если вам нужно знать, было ли это проверено или нет, вы можете добавить логический параметр «checked» (или любое релевантное имя) вашему объекту «Клиент» и изменить его с помощью «Checkbox» внутри адаптера. – MohanadMohie

ответ

1

Здесь мы пробегаем по всему виду внутри view объекта и нахождением CheckBox:

cList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { 
     Client currentClient = (Client) mAdapter.getItem(position); 

     try { 
      ViewGroup group = (ViewGroup) view; 
      if(group != null) { 
       View currView; 
       for(int i = 0; i < group.getChildCount(); i++) { 
        currView = group.getChildAt(i); 
        if(currView instanceof CheckBox) { 
         CheckBox checkBox = (CheckBox) currView; // this is your checkbox 
         int checkboxId = checkBox.getId(); 
         // do something 
         break; 
        } else { 
         // these are all the other views (not checkbox) 
        } 
       } 
      } 
     } catch (Exception e) { 
      Log.e(TAG, e.toString()); 
     } 
    } 
}); 
-1

Добавить это флажок: android:focusable="false" android:focusableInTouchMode="false"

+0

К сожалению, это не ответ на мой вопрос. – progNewbie

0

try:

Class.mAdapter.getItem(position)

"Класс" - имя класса, который в нем mAdapter был объявлен.

+0

Это не отвечает на вопрос. Элемент ListView имеет много объектов. OP хочет получить только «CheckBox» этого конкретного элемента. Ваш код вернет весь элемент ListView –