代码之家  ›  专栏  ›  技术社区  ›  Marcus Lagerstedt

在列表视图中制作单行

  •  0
  • Marcus Lagerstedt  · 技术社区  · 10 年前

    问题

    我添加视图的方式是,当我只希望一个位置有“M?ngd”行时,每隔五个项目添加一个视图。 为什么我只能在列表项在屏幕上可见时编辑它们。 即使我得到了20个项目,孩子仍会在5个项目上保持静止。。。。 有没有办法只说第1项有而没有

    位置-第一个可见位置

    我认为这是listview的问题

    由于其他原因,我的代码当时无法理解,所以我希望您无论如何都能理解我的问题。

    这是我的主要问题

    我添加到位置0的东西似乎也发生在6和12上。为什么ListView会这样呢? enter image description here 这是瑞典语,但这是我用列表视图得到的。 每个listview项目都有一个空的Linearlayout,当我按下向下箭头按钮时,我会向其中添加一个视图。问题是,每五个项目都会得到这个,或者我只能单击前五个项目。

    我不明白为什么他们让ListView如此复杂。我想在没有看到的情况下,得到一个在名单上的孩子!

    代码获取视图

        public View getView (int position, View convertView, ViewGroup parent){
                if (convertView == null)
                {
                    convertView = LayoutInflater.from(getContext()).inflate(R.layout.view_meal_item_editable, null);
                }
                convertView.setOnTouchListener(new ItemSwipeListener(position,
                        getResources().getDisplayMetrics().density));
                convertView.setClickable(true);
                // Lookup view for data population
                TextView food_item_name = (TextView) convertView.findViewById(R.id.food_item_name);
                food_item_name.setHint("hello");
        }
    

    添加视图的位置

        View view = searchResultList.getAdapter().getView(position, searchResultList.getChildAt(position - searchResultList.getFirstVisiblePosition()), searchResultList);
            LinearLayout extendedView = (LinearLayout)view.findViewById(R.id.extended_food_information);
            View convertExtendedView = LayoutInflater.from(this).inflate(R.layout.change_amount_on_food_view, null);
    extendedView.addView(convertExtendedView);
    
    1 回复  |  直到 10 年前
        1
  •  1
  •   Community CDub    7 年前

    建议使用 header view 如果你只为第一个元素做这件事。

    否则,如果在 getView() 方法,类似于:

    if(position==0){
        // add extra view
    } else {
        // remove extra view if exist
    } 
    

    或者您可以删除IF条件: if (convertView == null) ,所以您每次都会膨胀一个新的布局,这将解决您的问题,但这是 不好的 用于列表性能