0

我为我的 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 分离

提前致谢!

4

1 回答 1

0

如果您在 xml 文件中的布局中将“可点击”设置为“真”,则将其从各个位置删除。那你可以试试...

如果您在任何地方声明,那么只有。如果您声明“view_name.setClickable(true)”,则删除此行。如果您使用的是 ontouchlistener,那么还有一件事总是返回 false。实际上我遇到了类似的问题,我在 listview 行中使用 listview 和 imageview。我的 imageview 正在接收点击事件,但 listview 没有收到 onitemclick 事件,因为我在布局中将 imageview 设置为可点击。

于 2012-04-22T13:35:56.310 回答