/ / Nie można ustawić OnItemClickListener na ListView, gdy ma zagnieżdżony GridView - android, listview, gridview, listener

Nie można ustawić OnItemClickListener na ListView, gdy ma zagnieżdżony GridView - android, listview, gridview, listener

mam GridView zagnieżdżony w ListView lubię to:

wprowadź opis obrazu tutaj

ListView zawiera zdarzenia (wiersze) i GridView użytkownicy uczestniczący (elementy wiersza). Teraz chcę dołączyć OnItemClickListener do mojego ListView ale kiedy klikam w wiersz nic się nie dzieje. Próbowałem rozwiązać problem i odkryłem, że Android szuka zestawu nasłuchującego GridView podczas kliknięcia rzędu. Chcę, żeby zadzwonił do Listenera ListView ale nie wiem, jak to zmusić.

Odpowiedzi:

1 dla odpowiedzi № 1

GridView jest elementem przewijanym, ponieważ zajmuje najwięcej miejsca w wierszu swojego rodzica (ListView) staje się nietykalny. Musisz zrobić swoje GridView unscrollable. Można to zrobić, rozszerzając GridView i ovveriding onMeasure method

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

Inną opcją jest użycie RecyclerView z GridLayoutManager wydał z ListView a następnie nie używać GridView