2011-03-28 79 views
0

我有一个GridView使用ImageAdapter。目前,可以点击并长按GridView中的每个单独图像。我试图添加功能,以便还可以单击gridview本身,也就是说未由ImageAdapter填充的空间。这是我对我的企图代码迄今:Gridview可以同时拥有onclick和onitemclick监听器吗?

mGridViewWords.setAdapter(new AACButtonAdapter(this, button_size, TouchButtonAdapter.TOPIC_WORDS, mDB)); 

     mGridViewWords.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       AddWordButtonAction((TouchButton) v); 
      } 
     }); 
     mGridViewWords.setOnClickListener(new SelectViewListener()); 

     mGridViewWords.setOnItemLongClickListener(new OnItemLongClickListener() { 
      public boolean onItemLongClick(AdapterView<?> parent_view, View button, int position, long id) { 
       removeButtonFromView((GridView)parent_view, position, mCurrentWordCategory); 
       return true; 
      } 
     }); 

然而,欲以.setOnClickListener()的时候,我在logcat中得到这个错误:

java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead

有没有人有意见,以不同的方式获得我以后的功能?可以为GridView设置两个适配器吗?

回答

0

假设你的GridView占据了整个屏幕,一种解决方案是将另一个View放在FrameLayout中,该FrameLayout也填充整个屏幕(例如,没有指定android:src的ImageView)。如果用户点击未被栅格项占据的区域,则触摸事件将向下移动到底层视图,在那里您可以按照您的想法在GridView中单击它。只有一点点黑客,但你的情况并不常见。

+0

嗯这似乎是一个想法,但我有4个网格视图,这将需要发生。 – Ian 2011-03-29 00:23:11