在列表视图中操作单行
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)
,这样你每次都会膨胀一个新的布局,它会解决你的问题,但这不好榜单表现
问题
当我只希望一个位置有此 "Mängd" 行时,我添加视图的方法是每隔五项添加视图。 为什么我只能编辑在屏幕上可见的列表项。 child 将在 5 个项目中保持静态,即使我得到了 20 个项目.... 有什么办法只能说第 1 项会有这个而不是
位置 - firstvisibleposition
我认为这是列表视图的问题
我的代码当时由于其他原因无法理解,所以我希望你能解决我的问题。
这是我的主要问题
我添加到位置 0 的东西似乎也发生在 6 和 12 为什么 ListView 这么奇怪?
我不明白为什么他们让 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)
,这样你每次都会膨胀一个新的布局,它会解决你的问题,但这不好榜单表现