Google の指示に従って、単一行のコンテキスト アクション バーを実装しました。OnLongClickListener
説明では、各ビューにを追加するように指示されています。私は を使用しているため、次の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
場所もあるため、ユーザーは複数の行を選択でき、通常の行のクリックは正常に機能します。MultiChoiceModeListener
ChoiceMode
CHOICE_MODE_MULTIPLE_MODAL