java ListView OnLongClick奇怪的行为
我的项目中有一个列表视图。它有许多元素,并且使用自定义适配器,因为它是从rails服务器动态填充的
我想在长按列表项时更改列表项的内容。为了实现这一点,我在ListItem中有两个布局,一个可见,一个隐藏
问题是,当我按下LongAn项时,布局会发生变化(正如预期的那样),但其他列表项也会受到影响,并以相同的方式发生变化。这种情况似乎每5项就发生一次,我不知道为什么
这是我正在使用的LongClickListener,它位于自定义适配器上的de 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;
}});
如果有任何帮助,我将不胜感激,谢谢
# 1 楼答案
ListViews循环使用视图,因此您的所有项目只有几个视图。您可以直接更改其中一个视图实例,以便在信息摘要之间切换。您需要的是将受影响位置的info |简短标志的状态保存到其他位置(例如,适配器中应为“简短”的位置列表)。这样,当你回到
getView()
时,你可以显示正确的一个