从TabHost中包含的片段的列表视图中,我实现了CAB以及longPressed(选定)行的突出显示。这完美运行> = api 14.但是,我支持api> 8.
在api 8中,我看到奇怪的行为,有时候longPressing列表项时列表中的错误视图会突出显示。似乎根据列表中可见的行数确定突出显示是否有效。这非常令人困惑,因为执行背景颜色更改的方法是使用传递给它的视图,并且位置参数确实是正确的。
这是一个错误还是我错过了什么?
listView.setAdapter(
new myAdapter(
inflater,
tvSeason)
);
listView.setOnItemLongClickListener( new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
if (mActionMode != null) {
dismissActionMode();
return false;
}
// Start the CAB using the ActionMode.Callback defined above
mActionMode = getSherlockActivity().startActionMode(mActionModeCallback);
view.setSelected(true);
selectedTvEpisode = (TvEpisode)listView.getAdapter().getItem(position);
mActionMode.setTitle(MyApp.getResourceString(R.string.tv_episode_number, selectedTvEpisode.getNumber()));
view.setBackgroundColor(getActivity().getResources().getColor(R.color.lime));
selectedView = view;
return true;
}
});
答案 0 :(得分:1)
小心,不要设置那样的视图背景颜色!请记住:ListView
中的观点会被回收。您应该做的是获取数据项,设置选定的标记,然后在notifyDataSetChanged()
中调用Adapter
。根据{{1}}中选定的标记设置背景。