mam GridView
zagnieżdżony w ListView
lubię to:
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 № 1GridView
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