我正在尝试创建一个ListView,您可以一次点击不超过4个项目。 这些物品必须彼此相邻。
当我点击我的第一个项目时,我想看看是否已经点击了上一个或下一个项目。
注意:当我点击某个项目时,我会更改背景颜色。因此,如果我想知道是否点击了某个项目,我只想检查背景颜色。
public void OnItemClick(AdapterView<?> parent, View, view, int position, long id){
View currentItem = view;
currentItem.setBackgroundResource(R.drawable.li_gradient);
// How do I get the view in front of and behind currentItem
// to check their current background color? (Assuming they exist)
}
答案 0 :(得分:0)
您应该在适配器类中执行此操作,模型项需要具有后台资源属性。
只需转换适配器,获取上一个或下一个项目,设置新背景并通知listView
public void OnItemClick(AdapterView<?> parent, View, view, int position, long id){
YourAdapterClass adapter = (YourAdapterClass) parent.getAdapter();
// TODO check if is a valid position
YourItem item = (YourItem) adapter.getItem(position-1);
item.setBackgroundResource(R.drawable.li_gradient);
adapter.notifyDataSetChanged();
}
答案 1 :(得分:0)
请记住,如果重新创建活动(例如,由于配置更改)或重新绘制列表视图(例如,当通知更改时),它将不会自动了解对视图所做的更改在onClick方法中,背景更改可能会丢失。我会使用itemSelected(int i),clearAllSelected(),getSelectedItems()等方法创建自定义AdapterView,并使adapterview成为跟踪和维护这些更改以及渲染背景的单一责任点。
Kaamel