ListView - 获取所单击项目的相邻项目

时间:2015-11-19 21:17:43

标签: java android listview onitemclicklistener

我正在尝试创建一个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)

}

2 个答案:

答案 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