当前位置:
首页 >
设置ListView中的所有Item均不可点击
发布时间:2023/12/14
54
豆豆
生活随笔
收集整理的这篇文章主要介绍了
设置ListView中的所有Item均不可点击
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
设置ListView中的所有Item均不可点击
正常地说一般要是使一个控件不可点击,不外乎使用以下几种方法
- setEnable
- setClickable
- setFocusable
但是对于ListView如果直接使用以上方法均失效,想要达到使ListView下所有Item均不可点击的状态(置灰),需要重写Adapter下的isEnable方法,并且配合getView达到上述效果
1、首先需要在Adapter中添加一个标志位
`boolean isAllItemEnable=true`2、重写isEnable方法
@Overridepublic boolean isEnabled(int position) {return isAllItemEnable;}3、增加是否开启全选的两个方法
public void disableAllItemChoser() {isAllItemEnable = false;notifyDataSetChanged();}public void enableItemChoser() {isAllItemEnable = true;notifyDataSetChanged();}4、修改getView方法
@Overridepublic View getView(int position, View convertView, ViewGroup arg2) {ViewHolder holder;if (convertView == null) {...} else {...}// 控制是否置灰if (!isAllItemEnable) {holder.textView_contactsinfo.setEnabled(false);holder.checkBox_contactsinfo.setEnabled(false);} else {holder.textView_contactsinfo.setEnabled(true);holder.checkBox_contactsinfo.setEnabled(true);}return convertView;}`5、调用
- 设置所有不可选
myAdapter.disableAllItemChoser() - 设置所有可选
myAdapter.enableItemChoser()
最后,附上本人自己写的一个Adapter,原理和上述一样
public class MessInfoAdapter extends BaseAdapter {private LayoutInflater mInflater;private String[] stringType;private boolean isAllItemEnable = true;public MessInfoAdapter(Context context, String[] stringType) {this.stringType = stringType;this.mInflater = LayoutInflater.from(context);functionSelectedList = new SparseBooleanArray();for (int i = 0; i < mData.length; i++) {functionSelectedList.put(i, false);}attachmentSelectedList = new SparseBooleanArray();for (int i = 0; i < attachmentData.length; i++) {attachmentSelectedList.put(i, false);}}@Overridepublic boolean isEnabled(int position) {return isAllItemEnable;}public void disableAllItemChoser() {isAllItemEnable = false;notifyDataSetChanged();}public void enableItemChoser() {isAllItemEnable = true;notifyDataSetChanged();}@Overridepublic int getCount() {return stringType.length;}@Overridepublic Object getItem(int arg0) {return null;}@Overridepublic long getItemId(int arg0) {return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup arg2) {ViewHolder holder;if (convertView == null) {holder = new ViewHolder();convertView = mInflater.inflate(R.layout.contactsfill_list_item, null);holder.textView_contactsinfo = (TextView) convertView.findViewById(R.id.textview_contactsinfo);holder.checkBox_contactsinfo = (CheckBox) convertView.findViewById(R.id.checkbox_contactsinfo);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}// 针对不同的ListView填充不同的数据if (java.util.Arrays.equals(stringType, mData)) {holder.textView_contactsinfo.setText(mData[position]);holder.checkBox_contactsinfo.setChecked(functionSelectedList.get(position));} else if (java.util.Arrays.equals(stringType, attachmentData)) {holder.textView_contactsinfo.setText(attachmentData[position]);holder.checkBox_contactsinfo.setChecked(attachmentSelectedList.get(position));}if (!isAllItemEnable) {holder.textView_contactsinfo.setEnabled(false);holder.checkBox_contactsinfo.setEnabled(false);} else {holder.textView_contactsinfo.setEnabled(true);holder.checkBox_contactsinfo.setEnabled(true);}return convertView;}}总结
以上是生活随笔为你收集整理的设置ListView中的所有Item均不可点击的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 城市公共交通规划掌握内容
- 下一篇: 长连接心跳问题解决总结