【发布时间】:2015-05-25 09:58:56
【问题描述】:
我有一个 ExpandableListView 样式的购物车。
我正在尝试更新子项的正确可绘制图形。所有子项都开始显示“+”,我希望在单击时将其更改为“-”。
我尝试在适配器中执行此操作,但是当我滚动列表并打开其他组选项卡时,我注意到以前未单击的项目中的项目也被修改了。
我不确定我的适配器中的视图回收是否存在问题,或者是否有其他原因可能导致此问题。这是我的代码:
自定义适配器 getChildView 方法
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View childView, ViewGroup parent) {
final View row;
final FullMenuItemHolder fullMenuItemHolder;
if (childView == null) {
LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.full_menu_child_item, parent, false);
fullMenuItemHolder = new FullMenuItemHolder(row);
row.setTag(fullMenuItemHolder);
}
else {
row = childView;
fullMenuItemHolder = (FullMenuItemHolder) row.getTag();
}
// set item name
fullMenuItemHolder.title.setText(getChild(groupPosition, childPosition).getVenue_item_name());
row.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//check to see if item flagged as added to cart and set the respective drawable image
if (!getChild(groupPosition,childPosition).getAddedToCart()) {
getChild(groupPosition,childPosition).setAddedToCart(true);
fullMenuItemHolder.title.setCompoundDrawablesWithIntrinsicBounds(null, null, fragment.getResources().getDrawable(R.drawable.remove), null);
} else {
getChild(groupPosition,childPosition).setAddedToCart(false);
fullMenuItemHolder.title.setCompoundDrawablesWithIntrinsicBounds(null, null, fragment.getResources().getDrawable(R.drawable.add), null);
}
}
});
return row;
}
在 Fragment 中设置适配器 (服务器下载后从 asyncTask 中的 onPostExecute 调用)
fullMenuExpListAdapter = new FullMenuExpListAdapter(this.getActivity(), listHeaderNames, listChildItems, this);
expandableListView.setAdapter(fullMenuExpListAdapter);
【问题讨论】:
标签: android expandablelistview expandablelistadapter