我为我的 Android 应用程序实现了一个视图堆栈系统,它在推送新视图时会删除目标布局中的当前视图,将其存储在堆栈中,然后将新视图添加到布局中。
在我尝试存储然后恢复包含 ListView 的视图之前,它可以完美运行。这样做时,ListView 不会收到 itemClick 事件,尽管它会滚动。
栈系统的代码如下:
Stack<View> viewStack;
public View pushView(View v) {
// 1. Get reference to main content panel
LinearLayout content = (LinearLayout) findViewById(R.id.contentPanel);
View last = content.getChildAt(0);
// Pushing old to stack
viewStack.push(last);
// 2. Clear it
content.removeAllViews();
// 3. Add new View
content.addView(v);
return last;
}
public View popView() {
if (!viewStack.isEmpty()) {
// 1. Get reference to main content panel
LinearLayout content = (LinearLayout) findViewById(R.id.contentPanel);
View last = content.getChildAt(0);
// 2. Clear it
content.removeAllViews();
// 3. Add last View
content.addView(viewStack.pop());
// Pushing old to stack
return last;
} else {
return null;
}
}
奇怪的是,视图中包含 ListView(复选框和按钮)的其他项目确实会接收 clickEvents。我怀疑:1. ListView 已失去焦点,因此它不会接收这些事件,或者 2. ListView 已与 onItemClickListener 分离
提前致谢!