ListView怎么才能让指定的item disable和enable呢?

heaven2358 2011-09-16 05:07:27
在adapter里面实现了isEnabled和areAllItemsEnabled函数,可以把部分item disable掉,但是不知道怎么再enable回来,试了很多方法都不行,听说是因为这两个函数实现了之后,被disable的item在系统中就被当做 separator item 处理了。。

有没有大牛知道怎么把这些disable的item重新enable呢?

后来换了一种思路,在getView里面让相应的convertView.setEnable(false),但是这样虽然可以灰化item项,却并不能真正disable掉item,item还会响应onItemClick事件。。

各位大牛,有没有什么办法解决小弟的问题啊,急啊
...全文
832 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kengzcn1123 2011-09-21
  • 打赏
  • 举报
回复
我也被困扰着。。。
小裴同学 2011-09-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 heaven2358 的回复:]

引用 4 楼 justchenjie 的回复:

convertView.setOnclickListener(null);只能你自己再试试了


这种方法太丑陋了啊,android难道没有提供单个item禁用/不禁用的方法吗?
[/Quote]
你可以选择重写一下listview哈哈,还有就是可以用preference来实现,而且preference比listview管理数据容易很多。preference就给你提供的每个item禁用/不禁用的。
heaven2358 2011-09-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 justchenjie 的回复:]

convertView.setOnclickListener(null);只能你自己再试试了
[/Quote]

这种方法太丑陋了啊,android难道没有提供单个item禁用/不禁用的方法吗?
heaven2358 2011-09-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 justchenjie 的回复:]

在ListView的setOnItemClickListener中根据行做判断吧
[/Quote]

我想在就是用的这种方法,判断点击的item的isEnable值,但这样没有从本质解决问题,难道android就没有提供一种直接对item设置enable和disable的方法吗??
heaven2358 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 justchenjie 的回复:]
我来回答吧
可以的,你要覆写Adapter的getView方法,其中convertView的setClickable方法
[/Quote]

不行啊,我用的是arrayAdapter,getView的代码如下:
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
try {
String item = this.getItem(position);

if (convertView == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.main_item, null);
TextView itemNameTextView=(TextView) convertView.findViewById(R.id.main_item_text);
ImageView imgviewLeft=(ImageView) convertView.findViewById(R.id.main_item_icon_end);
itemNameTextView.setText(item);
if(item.equals("退出")){
imgviewLeft.setVisibility(View.GONE);
}
if(item.equals("读取优化配置文件")){
itemNameTextView.setEnabled(false);
itemNameTextView.setClickable(false);
convertView.setEnabled(false);
convertView.setClickable(false);
}
if(item.equals("优选网络上网")){
convertView.setEnabled(false);
//convertView.setFocusable(false);
}
convertView.setTag(item);
}

} catch (Exception ex) {
Log.e("Hme", "getView", ex);
}
return convertView;
}
wyx100 2011-09-19
  • 打赏
  • 举报
回复
覆写Adapter的getView方法,其中convertView的setClickable方
leidetianshiyj 2011-09-19
  • 打赏
  • 举报
回复
//显示listView的内容:
listView.setVisibility(View.VISIBLE);
//不显示listView的内容:
listView.setVisibility(View.GONE);
justchenjie 2011-09-19
  • 打赏
  • 举报
回复
在ListView的setOnItemClickListener中根据行做判断吧
justchenjie 2011-09-19
  • 打赏
  • 举报
回复
convertView.setOnclickListener(null);只能你自己再试试了
justchenjie 2011-09-18
  • 打赏
  • 举报
回复
我来回答吧
可以的,你要覆写Adapter的getView方法,其中convertView的setClickable方法
heaven2358 2011-09-18
  • 打赏
  • 举报
回复
怎么没有人回答啊,大牛们帮帮忙啊,小弟刚学android,好多不明白的地方啊

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧