我的ListView看起来像这样:
每个列表元素由具有两个图像按钮和textview的相对布局组成。
现在单击每个列表元素会突出显示列表元素的背景(相对布局背景)。这是使用onItemClickListener
回调完成的。但是,单击列表视图上的任何位置仍会触发回调并更改背景颜色。
有办法:
如果我单击图像按钮,其中一个将是upvote,一个将downvote以某种方式处理此事件不同?具体而不是改变整个列表元素的背景我想只需要upvote按钮来回复
如果我点击列表元素中的任何其他位置(不包括两个按钮),我希望onItemClick事件通常会更改整个列表元素的背景。
现在的听众:
public class TsClickListener implements AdapterView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
view.setSelected(true);
}
}
答案 0 :(得分:2)
为View设置两个单独的onClickListener(),像这样设置ImageButton,
对于ImageView,
ImageButton iv = view.findViewById(R.id.ivHello);
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//ImageButton is now clicked
}
});
对于您的常规视图,
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//View is now clicked
}
});
答案 1 :(得分:2)
尝试此操作
select DATEDIFF (day,'(select O.VALUE1
from TABLE1 O
where O.VALUE1 = 16650476)' ,
'(SELECT C.VALUE1
from TABLE1 O, TABLE2 C
WHERE O.VALUE1 = C.VALUE2 AND O.order_id = 12345678)') AS DIFFDATE;
答案 2 :(得分:1)
如果要对图像按钮和列表元素使用相同的onClickListener,可以在onClickListener中使用instanceof
运算符,这样就可以区分是否单击了ImageButton或TextView。
public class TsClickListener implements AdapterView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(view instanceof ImageButton) {
// upvote/downvote stuff
}
else if(view instanceof TextView) {
view.setSelected(true);
}
}
}