onItemLongClick不会更新listview中的视图项

时间:2017-04-05 12:03:34

标签: java android android-layout listview onlongclicklistener

美好的一天!

我想知道为什么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;
}

3 个答案:

答案 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;
}