2017-04-05 78 views
0

美好的一天!onItemLongClick不会更新列表视图中的查看项目

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

post updateView()。 – Rajasekhar

+0

你的代码甚至不会编译。 –

+0

嗨我所有的歉意,我忘了添加return语句,但问题仍未解决。 – Kuro

回答

1

您必须返回true,以便android会知道您的点击已被使用。

@Override 
public boolean onItemLongClick(AdapterView<?> arg0, View view, int position, 
     long id) { 
    updateView(position); 
    return true; 
} 
+0

正确,我只补充一点,如果返回true,Android不会为onItemClick事件而烦恼,以免他在代码中实现它。 –

+0

你好,我的道歉忘了添加关于这个问题的回复声明,但仍然没有解决问题。 – Kuro

-1

实例化后,您的项目视图,设置:

yourItemView.setLongClickable(true); 
yourItemView.setOnLongClickListener(this); 

而且记得要加长击事件回报:

@Override 
public boolean onItemLongClick(AdapterView<?> arg0, View view, int position, 
     long id) { 
    updateView(position); 
    return true; 
} 
+0

OnItemLongClick是listView中的一个回调函数,onLongClickListener会为每个项目添加很多回调函数。 –

+0

嗨,谢谢您的反馈。我已经实例化所有的意见和倾听者也我的歉意,我忘了在那里添加我的返回语句,但仍然是问题未解决 – Kuro

0

你将不得不返回onItemLongClick听者的真正价值,试试这个: -

@Override 
    public boolean onItemLongClick(AdapterView<?> arg0, View view, int position, 
     long id) { 
    updateView(position); 
    return true; 
    } 

希望这会帮助你。 :)

+0

您好,谢谢您的反馈,但我的歉意,我忘了添加return语句,但问题仍未解决。 – Kuro