Androidアプリケーション用のViewスタックシステムを実装しました。新しいビューを押すと、ターゲットレイアウトの現在のビューが削除され、スタック内に配置し、新しいビューをレイアウトに追加します。Android ListViewはremoveAllViews()で削除され、addViewで復元された後にitemClickイベントを受け取らない
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;
}
}
は不思議なことに、リストビュー(チェックボックスとボタン)を含むビュー内の他の項目はclickEventsを受信DO次のよう
スタックシステムのためのコードです。 私は疑う:それはこれらのイベントを受信しないよう 1. ListViewコントロールがフォーカスを失った、または 2.リストビューは、事前にonItemClickListenerの
感謝を取り外しました!
ビューに追加するときに各項目にリスナーを追加する必要があると思います。 – Guillaume
もちろん、ListViewを含むビューが初めてビルドされて追加されると、すべてが機能しています。この問題は、示されている方法で保存して復元すると発生します。私はそれを指摘することを忘れて申し訳ありません:) – thegraffo
さて、あなたはリスナーを初めて追加するが、後ではない? – Guillaume