我按照 Google 的说明实现了一个单行上下文操作栏。说明说要向OnLongClickListener
每个视图添加一个,并且由于我使用的是 a CustomAdapter
,因此我使用以下代码在每一行上实现了它:
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
final ViewHolder holder;
final View tempView = convertView;
if (convertView == null) {
holder = new ViewHolder();
convertView.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View view) {
if (mActionMode != null) {
return false;
}
mActionMode = getSherlockActivity().startActionMode(mActionModeCallback);
view.setSelected(true);
return true;
}
});
}
}
但是,使用该代码会禁用正常点击,因此我OnClickListener
在每个视图中添加了一个:
convertView.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
tempView.setBackgroundColor(getResources().getColor(R.color.blue));
final Intent details = new Intent(this, Details.class);
startActivity(details);
}
});
这或多或少有效,但看起来很老套,背景颜色的变化不像正常的那样“平滑”。我还有另一个ListView
我正在使用 aMultiChoiceModeListener
并设置ChoiceMode
to 的地方CHOICE_MODE_MULTIPLE_MODAL
,因此用户可以选择多行,并且正常的行单击工作正常。