在列表视图中操作单行

Manupilate a single row in listview

问题

当我只希望一个位置有此 "Mängd" 行时,我添加视图的方法是每隔五项添加视图。 为什么我只能编辑在屏幕上可见的列表项。 child 将在 5 个项目中保持静态,即使我得到了 20 个项目.... 有什么办法只能说第 1 项会有这个而不是

位置 - firstvisibleposition

我认为这是列表视图的问题

我的代码当时由于其他原因无法理解,所以我希望你能解决我的问题。

这是我的主要问题

我添加到位置 0 的东西似乎也发生在 6 和 12 为什么 ListView 这么奇怪? 它是瑞典语的,但这是我通过列表视图得到的。 每个列表视图项目都有一个空的 Linearlayout,当我按下向下箭头按钮时,我将向其添加一个视图。问题是每五个项目都有这个,或者我只能点击前 5 个。

我不明白为什么他们让 ListView 如此复杂。我希望能够在没有看到它的情况下获得列表中的 child!

CODE getView

    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);

如果您只对第一个元素执行此操作,建议使用 header view

否则,如果您在 getView() 方法中添加额外的视图会更好,例如:

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

或者你可以删除 IF 条件:if (convertView == null),这样你每次都会膨胀一个新的布局,它会解决你的问题,但这不好榜单表现