где выполнить onClickListener и как? - PullRequest
0 голосов
/ 16 января 2012

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

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 16 января 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 () при нажатии на элемент списка.

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

0 голосов
/ 16 января 2012

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

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

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

    if(cbx.isChecked()){
        Toast.makeText(getApplicationContext(), 
                "Checked position " + position, 
                Toast.LENGTH_SHORT).show();
    }
...