2015-10-07 54 views
-1

我有嵌套在ListView这样的GridView无法设置OnItemClickListener上的ListView当它嵌套的GridView

enter image description here

ListView包含事件(行)和GridView用户参加(行项目)。现在我想将OnItemClickListener附加到我的ListView,但是当我点击一行时什么也没有发生。我试图调试这个问题,并且我发现Android正在寻找一个在GridView上设置的监听器。我想让它在ListView上打电话给Listener,但我不知道如何强制它这样做。

+0

把你的代码....你在哪里设置监听器。 –

回答

1

GridView由于其占用行的大部分空间,所以它的父母(ListView)变得不可触及。 您需要使GridView不可滚动。它可以通过扩展GridView和ovveriding onMeasure方法做

public class NonScrollableGridView extends GridView { 
    public NonScrollableGridView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     // Do not use the highest two bits of Integer.MAX_VALUE because they are 
     // reserved for the MeasureSpec mode 
     int heightSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); 
     super.onMeasure(widthMeasureSpec, heightSpec); 
     getLayoutParams().height = getMeasuredHeight(); 
    } 
} 

另一种选择是使用RecyclerViewGridLayoutManager insted的的ListView,然后不使用GridView