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

前もって感謝します!

4

1 に答える 1

0

xmlファイルのレイアウトで「クリック可能」を「true」に設定している場合は、すべての場所から削除してください。それからあなたは試すことができます...

どこかで宣言している場合のみ。「view_name.setClickable(true)」を宣言している場合は、この行を削除してください。ontouchlistener を使用している場合は、もう 1 つ、常に false を返します。実際、リストビュー行でリストビューとイメージビューを使用していた同様の問題に直面しました。私のイメージビューはクリックイベントを受け取りましたが、レイアウトでイメージビューをクリック可能に設定したため、リストビューは onitemclick イベントを受け取りませんでした。

于 2012-04-22T13:35:56.310 に答える