2016-07-05 2 views
0

Я пытаюсь составить список флажков с CustomAdapter, и я слежу за учебник here, и мой код выглядит следующим образом:ListView с кнопкой OnClick метод

dataAdapter = new CustomAdapter(getContext(), R.layout.customrow, CheckboxArrayList); 
    ListView listView = (ListView) FragmentView.findViewById(R.id.list); 
    listView.setAdapter(dataAdapter); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      //..... 
      Toast.makeText(getContext(), "Clicked on Row: " + Checkbox.getName(), Toast.LENGTH_LONG).show(); 
     } 
    }); 

Этот метод вызывается только когда я нажмите область поля вне флажка. Как сделать этот метод onClick возможным для самого флажка, а не для записи списка? Благодаря

+0

В этом вы должны пойти для перезвона. Определите один интерфейс и попробуйте сделать обратный вызов, который вызовет метод, определенный в вашем родительском классе (Activity/Fragment или что-то еще). –

ответ

0

Вы хотите установить слушателя самого элемента управления Checkbox, а не ListView.

// in your ListView adapter 
public View getView(int positon, View convertView, ViewGroup parent) 
{ 
    // inflate your cell 
    View cell = ... 

    // find your checkbox 
    CheckBox checkBox = (CheckBox)cell.findViewById(R.id.checkbox); 

    // set an OnCheckedChangeListener on the checkbox 
    checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton button, Boolean isChecked) 
    { 
    } 
    }); 

. 
. 
. 

Используйте шаблон ViewHolder, чтобы сделать это более эффективно, если вы еще этого не сделали. ViewHolder позволит вам сохранить ссылку на строку/позицию #, а также поделиться прослушивателем для события CheckedChange.

+0

Привет, спасибо за ваш ответ. Не могли бы вы показать мне, как получить доступ к номеру позиции флажка с помощью ViewHolder? – Deidara

+0

https://developer.android.com/training/improving-layouts/smooth-scrolling.html – CSmith

0

Использование setOnCheckedChangeListener(), чтобы получить проверить событие коробки