我有一个活动,它有一个按钮和一个列表视图(带有chechbox,图像和文本)。
我正在从customAdapter类创建listview,它扩展了BaseAdapter
类。
我正在处理该customAdapter类中的复选框。
现在我的问题是如何知道检查了哪个项目以及如何在
上执行操作检查了listItems.Because我的按钮在活动中但我需要在那个customadapter类中执行onClickListener
??
感谢您的帮助。
答案 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()。
希望这有帮助。