if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { this.getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); this.getListView().setMultiChoiceModeListener(new ModeCallback()); this.getListView().setonItemClickListener(new ListViewOnItemClickListener()); } else { // https://stackoverflow.com/questions/9754170/listview-selection-remains-persistent-after-exiting-choice-mode this.getListView().setonItemLongClickListener(new ListViewOnItemLongClickListener()); this.getListView().setonItemClickListener(new ListViewOnItemClickListener()); }
现在,对于每一行,我想添加一个小按钮.单击小按钮将产生按钮单击事件,这与ListView原始单击事件不同.
在我的ArrayAdapter中,我习惯了
public View getView(int position,View convertView,ViewGroup parent) { View rowView = convertView; if (rowView == null) { LayoutInflater inflater = activity.getLayoutInflater(); rowView = inflater.inflate(R.layout.watchlist_row_layout,null); ... } Button button = (Button)rowView.findViewById(R.id.button1); button.setonClickListener(new OnClickListener() { @Override public void onClick(View v) { Utils.showLongToast("BUTTON CLICK"); } });
单击该按钮将产生按钮单击事件.但是,单击按钮以外的区域,将不再产生任何ListView单击事件.
解决方法
android:focusable="false"
为你的按钮. ImageButtons,RadioButtons,……
Android has been primarily designed for a large set of input methods.
The entire system is completely capable of working with no touch
screen. To navigate through the UI,the user can use a directional pad
which focuses Views after Views if and only if those Views are
focusable. By default,all Android controls are focusable. In order to
prevent having controls that are not focus-reachable,the ListView
will simply prevent the selection (and click) of an itemview. By
design,the ListView blocks clicks of itemview containing at least one
focusable descendant but it doesn’t make the content focus-reachable
calling setItemsCanFocus(true).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。