ListView 項目中包含 GridView,單項選擇需保存狀態。但 GridView 自身可滑動,導致外層 ListView 滑動事件被攔截,體驗極差。
禁用 GridView 的滑動,使其僅作為靜態佈局容器展示固定數量項目:
gridView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true; // 消費觸摸事件,禁止滑動
}
});
或繼承 GridView 重寫 onTouchEvent 返回 true。
getView 中根據數據模型設置選中狀態(如 setChecked、背景色)。notifyDataSetChanged()。NestedScrolling 機制協調滑動。RecyclerView 實現分組展示。