【问题标题】:Manupilate a single row in listview在列表视图中操作单行
【发布时间】:2015-04-01 10:51:46
【问题描述】:

问题

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

位置 - 第一个可见位置

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

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

这是我的主要问题

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

我不明白他们为什么让 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);

【问题讨论】:

  • 这是因为 ListView 回收机制:stackoverflow.com/a/14108676/4224337。如果您需要帮助,请发布您的适配器代码(可能只是 getView() 方法)。
  • 添加了 getView :)
  • 您添加到位置 0 的“东西”在哪里?我看不出这个职位有什么特别之处。
  • 如果你想要一些在 pos = 0 的固定视图,只需使用标题视图。
  • 我同意“m iav”评论,如果它仅用于第一个元素,则使用标题视图。否则,如果您在 getView() 方法中添加额外的视图会更好,例如if(position==0){// add extra view} else {// remove extra view if exist}。或者你可以删除这一行:if (convertView == null) 这样你每次都会膨胀一个新的布局,它会解决你的问题,但这不利于列表性能

标签: android android-listview listviewitem


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多