0

各行に OnClickListeners を持つ ListView が 1 つあります。

アダプターからのコード (BaseAdpater)

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    final Lecture lecture = getItem(position);
    View rowView = convertView;
    if (rowView == null) {
        rowView = mLayoutInflater.inflate(R.layout.notes_lecture_list, null);
        ViewHolder viewHolder = new ViewHolder();
        viewHolder.id = (TextView) rowView.findViewById(R.id.tv_lecture_id);
        viewHolder.name = (TextView) rowView.findViewById(R.id.tv_lecture_name);
        viewHolder.row = (LinearLayout) rowView.findViewById(R.id.ll_lecture_notes);
        viewHolder.arrow = (ImageView) rowView.findViewById(R.id.iv_notes_menu_arrow);
        rowView.setTag(viewHolder);
    }
    ViewHolder holder = (ViewHolder) rowView.getTag();
    holder.row.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            select(lecture);
        }
    });  
}

CAB で複数行の削除を実装したい:

private void prepareAdapter() {
    mAdapter = new MyListAdapter(this);
    mMultiChoiceListener = new MyMultiChoiceModeListener(this, mAdapter);
    mMyListView.setAdapter(mAdapter);
    mMyListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
    mMyListView.setMultiChoiceModeListener(mMultiChoiceListener);
}

問題は、getView メソッドの OnClickListener で multipleChoiceListener (onLongClick) が動作しない、CAB が表示されない、OnClickListener を外すと multipleChoiceListener が正常に動作する、CAB が正常に表示される、ということです。

あなたはなにか考えはありますか?OnLongClick を実装して CAB を呼び出すなど、別の方法を試す必要がありますか? Gmail が行っているので、それが可能であることはわかっています。

4

1 に答える 1

0

解決策を見つけました。

listView で OnItemClickListener を使用すると正常に動作します。

于 2013-09-06T22:51:40.343 に答える