где выполнять onClickListener и как?

У меня есть действие, в котором есть кнопка и список (с чекбоксом, изображением и текстом).

Я делаю список из класса customAdapter, который расширяет класс BaseAdapter.

Я обрабатываю флажки в этом классе customAdapter.

Теперь моя проблема заключается в том, как узнать, какой элемент проверен и как выполнить действие над

который проверил listItems. Потому что моя кнопка находится в действии, но мне нужно выполнить это onClickListener в этом классе customadapter ??

Спасибо за помощь.


person Sunny    schedule 16.01.2012    source источник
comment
Итак, вы пытаетесь записать, какой флажок отмечен в списке?   -  person coder_For_Life22    schedule 16.01.2012
comment
да, я именно это ищу. а также где выполнить кнопку onClickListener и как?   -  person Sunny    schedule 16.01.2012


Ответы (2)


Вы бы поместили прослушиватель нажатия кнопки внутрь своего метода GetView(), где вы увеличиваете представление для каждой строки в вашем списке.

Для элементов флажка вы бы сделали то же самое. Это выглядело бы примерно так в вашем getview()

CheckBox cbx = (CheckBox)view.findViewById(R.id.c_checkbox);

    if(cbx.isChecked()){
        Toast.makeText(getApplicationContext(), 
                "Checked position " + position, 
                Toast.LENGTH_SHORT).show();
    }
person coder_For_Life22    schedule 16.01.2012
comment
Как выполнить кнопку onClickListener для всех отмеченных элементов в списке. например, удаление всех отмеченных элементов из списка при нажатии кнопки. - person Sunny; 16.01.2012
comment
Кнопка находится внутри каждой строки в списке? Или это всего лишь 1 кнопка? - person coder_For_Life22; 16.01.2012
comment
Ознакомьтесь с этой веткой stackoverflow.com /вопросы/5312069/ - person coder_For_Life22; 16.01.2012

Вы можете использовать созданный на заказ OnItemClickListener, который реализует OnClickListener.

private class CustomAdapter extends BaseAdapter implements OnClickListener {

    public MyAdapter() {
        /* Your constructor */
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.custom_row, null);
        }

        // take the CheckBox and set the listener.
        CheckBox cbx = (CheckBox) convertView.findViewById(R.id.checkbox);
        cbx.setOnClickListener(this);

        // set the listener for the whole row.
        convertView.setOnClickListener(new OnItemClickListener(position));
        return convertView;
    }

    @Override
    public void onClick(View v) {
        Log.v(TAG, "Row button clicked");
    }
}

private class OnItemClickListener implements OnClickListener{           
    private int mPosition;

    OnItemClickListener(int position){
        mPosition = position;
    }

    @Override
    public void onClick(View v) {
        Log.v(TAG, "onItemClick at position" + mPosition);                      
    }               
}

}

Также обратите внимание, что размещение фокусируемого представления в элементе списка предотвращает срабатывание onListItemClick() при щелчке элемента списка.

Надеюсь это поможет.

person Alex Lockwood    schedule 16.01.2012