setClickable()向后工作 - Android适配器

时间:2014-03-31 10:49:03

标签: android android-adapter clickable

我正在使用自己的适配器在GridView中使用并表示日历。我的问题是当我使用setClickable()和setFocusable()设置为false时我可以点击布局...但是如果我将它设置为true我就不能...感谢关注。我粘贴了我的代码。

 public View getView(final int position, View convertView, ViewGroup parent) {  
            // TODO Auto-generated method stub  

            String item = items[position];

             vi=convertView;
             final TextView tv;

            if(convertView==null){
                LayoutInflater inflater = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                vi = inflater.inflate(R.layout.dato, null);}

           tv = (TextView) vi.findViewById(R.id.textViewDia);

            if(item.equals("")){

                tv.setText(""+item);
                tv.setClickable(false);
                tv.setFocusable(false);
                tv.setEnabled(false);

            }
            else{
                 tv.setText(""+item);
            }



            return vi;  
        }
编辑:我将此添加到我的代码中,就像在第一个答案中说的那样,但仍然工作错误:

 @Override
        public boolean isEnabled(int position){

            return true;
        }

        @Override
        public boolean areAllItemsEnabled(){

            return false;
        }

解决方案:我找到了解决方案,就像@FunkTheMonk说的那样,但我理解错了我的坏英语抱歉=)

 @Override
        public boolean isEnabled(int position){
            if(items[position].equals(""))
            return false;

            else
                return true;
        }

        @Override
        public boolean areAllItemsEnabled(){

            return true;
        }

1 个答案:

答案 0 :(得分:3)

通过使布局可点击,它正在消耗点击事件。 如果布局无法点击,则点击事件将由GridView使用,并由OnItemClickListener上的任何GridView设置处理。

覆盖areAllItemsEnabled以返回false,覆盖isEnabled并在那里进行检查。