onListItemClick在单击后停止工作

时间:2012-07-22 12:39:34

标签: android listview view onclick

最后编辑 我在这里找到了问题:http://code.google.com/p/android/issues/detail?id=3414#c27

原始帖子 我有一个ListView(实际上是一个ListFragment),我想在点击它时展开一个对象,然后在第二次点击时再次折叠它。

这是我的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。但如果我删除了搜索栏,它就会很好用。

1 个答案:

答案 0 :(得分:1)

如果你的列表视图包含一个可以窃取焦点的控件(在你的情况下是Seekbar),你只需要让它不可聚焦

<SeekBar
        android:focusable="false" />