我为我的Android应用程序实现了一个View堆栈系统,在推送新的View后,它会删除目标布局中的当前视图,将其存储在堆栈中,然后将新视图添加到布局中。
在我尝试存储然后恢复包含ListView的View之前,它完美无缺。这样做时,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(CheckBoxes和Button)的其他项目会收到clickEvents。 我猜测: 1. ListView失去了焦点,因此它不会收到这些事件,或者 2. ListView已分离onItemClickListener
提前致谢!
答案 0 :(得分:0)
如果您在xml文件中的布局中将“clickable”设置为“true”,则将其从每个位置删除。然后你可以试试......
如果你只是在任何地方宣布。如果要声明“view_name.setClickable(true)”,则删除此行。如果你使用ontouchlistener,那么还有一件事就是返回false。实际上我遇到过类似的问题,我在listview行中使用listview和imageview。我的imageview正在接收点击事件,但listview没有收到onitemclick事件,因为我在我的布局中将imageview设置为可点击。