【发布时间】:2013-02-11 20:32:04
【问题描述】:
我的项目中有一个 ListView。它有很多元素,并且使用自定义适配器,因为它是从 Rails 服务器动态填充的。
我想在长按项目时更改 ListItem 的内容。为了实现这一点,我在 ListItem 中有 2 个布局,一个可见,一个隐藏。
问题是当我长按一个项目时,布局会发生变化(正如预期的那样),但其他 ListItems 也会受到影响,并且以相同的方式发生变化。这似乎每 5 个项目发生一次,我不知道为什么。
这是我正在使用的 LongClickListener,它位于自定义适配器的 getView 方法中:
View v = convertView;
if (v == null){
LayoutInflater vi =
(LayoutInflater)getActivity().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_item, null);
}
final LinearLayout placeInfo =
(LinearLayout) v.findViewById(R.id.list_item_info);
final RelativeLayout placeBrief =
(RelativeLayout)v.findViewById(R.id.list_item_brief);
v.setOnLongClickListener(new OnLongClickListener(){
@Override public boolean onLongClick(View v) {
placeInfo.setVisibility(View.GONE);
placeBrief.setVisibility(View.VISIBLE);
return false;
}});
如果有任何帮助,我将不胜感激,非常感谢。
【问题讨论】:
-
您是打算长按整个列表视图还是仅单击单个项目,如果是这样,您应该改用
setOnItemLongClick()。 -
我试过了,但我无法让它工作。不过,我这样做的方式改变了布局。这是我无法解决的副作用(布局更改影响超过 1 个 ListItem)。
-
所以我认为你想要做的是当你的列表视图中的一个项目被长时间点击时你不想再在列表中显示该项目?如果是这样的话,我可以很快写点东西。
标签: java android mobile onlongclicklistener