在哪里执行onClickListener以及如何执行?

时间:2012-01-16 17:13:42

标签: android android-listview android-button android-checkbox

我有一个活动,它有一个按钮和一个列表视图(带有chechbox,图像和文本)。

我正在从customAdapter类创建listview,它扩展了BaseAdapter类。

我正在处理该customAdapter类中的复选框。

现在我的问题是如何知道检查了哪个项目以及如何在

上执行操作

检查了listItems.Because我的按钮在活动中但我需要在那个customadapter类中执行onClickListener ??

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以将Button Click侦听器放在GetView()方法中,在该方法中为列表中的每一行扩充视图。

对于复选框项,你会做同样的..在你的getview()

中会看起来像这样
CheckBox cbx = (CheckBox)view.findViewById(R.id.c_checkbox);

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

答案 1 :(得分:0)

您可以使用实现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()。

希望这有帮助。