1

最終編集 ここで解決策の問題を見つけました:http://code.google.com/p/android/issues/detail?id=3414#c27

元の投稿 ListView (実際には ListFragment) があり、クリックするとオブジェクトが展開され、2 回目のクリックで再び折りたたまれます

これは私のonListItemClickです

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    //mAdapter.toggleItem(id); // removed this

    ListView list = getListView();
    int start = list.getFirstVisiblePosition();
    for (int i = start, j = list.getLastVisiblePosition(); i <= j; i++) {
        Cursor item = (Cursor) list.getItemAtPosition(i);
        if (id == item.getLong(item.getColumnIndex(ItemColumns._ID))) {
            View view = list.getChildAt(i - start);
            ViewStub stub = (ViewStub) view.findViewById(R.id.stub);
            // View inflated;
            if (stub.getVisibility() == View.VISIBLE)
                stub.setVisibility(View.GONE);
            else
                stub.inflate();
            // list.getAdapter().getView(i, view, list);
            // break;
        }
    }

}

動作しますが、一度しか発火しません。ListItem が展開されると、onListItemClick が再び起動されることはありません。理由はありますか?

一番

マーカス

編集:それは実際の行です: stub.inflate(); クリックイベントを無効にします

EDIT2 :問題はViewStubが原因であることがわかりました

次のようになります。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#CC0000"
    android:orientation="vertical">


    <SeekBar android:id="@+id/progress"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

LinearLayout は元の listItem を隠しません。しかし、シークバーを削除すると、うまく機能します。

4

1 に答える 1

1

リストビューにフォーカスを奪う可能性のあるコントロール (あなたの状況では Seekbar) が含まれている場合は、それをフォーカスできないようにする必要があります。

<SeekBar
        android:focusable="false" />
于 2014-01-14T07:13:03.273 に答える