我正在使用自己的适配器在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;
}
答案 0 :(得分:3)
通过使布局可点击,它正在消耗点击事件。
如果布局无法点击,则点击事件将由GridView
使用,并由OnItemClickListener
上的任何GridView
设置处理。
覆盖areAllItemsEnabled
以返回false,覆盖isEnabled
并在那里进行检查。