美好的一天!
我想知道为什么onItemLongClick不会更新listview中的视图项的原因,但是当我使用onItemClick时,它按预期工作,这是我的代码的片段。道歉,我忘了在该片段中添加return语句,但问题仍未解决。
private void updateView(int position) {
View v = listView.getChildAt(position -
listView.getFirstVisiblePosition());
ImageView tempImgView = (ImageView) v.findViewById(R.id.avatarIcon);
if (listView.isItemChecked(position)) {
tempImgView .setImageResource(R.drawable.ic_check_24dp);
} else {
tempImgView .setImageResource(R.drawable.ic_uncheck_24dp);
}
}
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position,
long id) {
updateView(position);
return true;
}
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View view, int position,
long id) {
updateView(position);
return true;
}
答案 0 :(得分:1)
你必须返回true,所以android会知道你的点击已被消耗。
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View view, int position,
long id) {
updateView(position);
return true;
}
答案 1 :(得分:0)
你必须返回onItemLongClick监听器的真值,试试这个: -
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View view, int position,
long id) {
updateView(position);
return true;
}
希望这会对你有所帮助。 :)
答案 2 :(得分:-1)
实例化项目视图后,设置:
yourItemView.setLongClickable(true);
yourItemView.setOnLongClickListener(this);
请记住添加长按事件返回:
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View view, int position,
long id) {
updateView(position);
return true;
}