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 (CheckBoxes と Button) を含むビュー内の他の項目は、clickEvents を受け取ります。1. ListView がフォーカスを失ったため、これらのイベントを受信しない、または 2. ListView が onItemClickListener から切り離されている
前もって感謝します!