2014-03-31 22 views
0

我正在做我自己的適配器以在GridView中使用並表示日曆。我的問題是,當我使用setClickable()和setFocusable()設置爲false我可以點擊佈局...但如果我將它設置爲true我不能...感謝您的關注。我粘貼了我的代碼。setClickable()向後工作 - Android適配器

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; 
     } 

回答

3

通過使佈局可點擊,消耗了點擊事件。 當佈局不可點擊時,點擊事件將被GridView消耗掉,並將由在GridView上設置的任何OnItemClickListener來處理。

重寫areAllItemsEnabled返回false,覆蓋isEnabled並在那裏執行檢查。

+0

我做的修改,但仍在工作錯了...我將添加到我的代碼如下: 覆蓋 \t \t公共布爾的IsEnabled(INT位置){ \t \t \t \t \t \t迴歸真實; \t \t} \t \t \t 覆蓋\t \t 公共\t布爾areAllItemsEnabled(){ \t \t \t \t \t \t返回假; \t \t} – Pabline

+0

謝謝你們。它解決了。 – Pabline