有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    ListViews循环使用视图,因此您的所有项目只有几个视图。您可以直接更改其中一个视图实例,以便在信息摘要之间切换。您需要的是将受影响位置的info |简短标志的状态保存到其他位置(例如,适配器中应为“简短”的位置列表)。这样,当你回到getView()时,你可以显示正确的一个