我有列表视图,在每个列表项中,我添加了复选框,两个 textviews 和 imageview 。我想要的是对listitem进行点击操作,并对imageview进行单独的点击操作(位于listitem中)。
我在itemclick事件中使用了以下代码:
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
CustomizeDialog customizeDialog = new CustomizeDialog(desserts.this); // Used to show a dialog
customizeDialog.show();
// TODO Auto-generated method stub
}
});
同时点击项目复选框已选中。因此,发生了两件事情(选中复选框并出现对话框),根据功能,这是真的。我希望当用户单击listitem复选框时选中或取消选中该复选框并且不显示任何对话框,并且当用户在相同的listitem上单击imageview时,上面只显示一个对话框,并且不选中或取消选中复选框。
我怎样才能做到这一点?请帮忙。
石
答案 0 :(得分:0)
您需要使用适配器并在此适配器的getView()中为您的复选框和对话框设置侦听器。
请参阅:http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/
答案 1 :(得分:0)
将侦听器设置为getView()
例如: -
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.list_layout, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.image1 = (ImageView) view.findViewById(R.id.image1);
viewHolder.image1.setOnClickListener(new OnClickListener(){
@Override
public voic onClick(View v){
// do something here
}
});
viewHolder.text1 = (TextView) view.findViewById(R.id.text1);
viewHolder.checkBox = (CheckBox) view.findViewById(R.id.checkbox);
viewHolder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// do something
}
});
view.setTag(viewHolder);