在adapter里面实现了isEnabled和areAllItemsEnabled函数,可以把部分item disable掉,但是不知道怎么再enable回来,试了很多方法都不行,听说是因为这两个函数实现了之后,被disable的item在系统中就被当做 separator item 处理了。。有没有大牛知道怎么把这些disable的item重新enable呢?后来换了一种思路,在getView里面让相应的convertView.setEnable(false),但是这样虽然可以灰化item项,却并不能真正disable掉item,item还会响应onItemClick事件。。各位大牛,有没有什么办法解决小弟的问题啊,急啊

解决方案 »

  1.   

    怎么没有人回答啊,大牛们帮帮忙啊,小弟刚学android,好多不明白的地方啊
      

  2.   

    我来回答吧
    可以的,你要覆写Adapter的getView方法,其中convertView的setClickable方法
      

  3.   


    不行啊,我用的是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;
    }
      

  4.   

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

  5.   

    在ListView的setOnItemClickListener中根据行做判断吧
      

  6.   

    //显示listView的内容:
    listView.setVisibility(View.VISIBLE);
    //不显示listView的内容:
    listView.setVisibility(View.GONE);
      

  7.   

    覆写Adapter的getView方法,其中convertView的setClickable方
      

  8.   


    我想在就是用的这种方法,判断点击的item的isEnable值,但这样没有从本质解决问题,难道android就没有提供一种直接对item设置enable和disable的方法吗??
      

  9.   


    这种方法太丑陋了啊,android难道没有提供单个item禁用/不禁用的方法吗?
      

  10.   

    你可以选择重写一下listview哈哈,还有就是可以用preference来实现,而且preference比listview管理数据容易很多。preference就给你提供的每个item禁用/不禁用的。