OnItemClickLisener不起作用 [英] OnItemClickLisener does not work

查看:203
本文介绍了OnItemClickLisener不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在试图与点击的项目列表视图中,每LIST_ITEM必须由2点击按钮。

i am trying to make list view with clickable items, and every list_item must consist 2 clickable buttons.

但是,如果我将按钮添加到项目布局,ITEN点击监听器停止工作...

But if i add buttons to item layout, iten click listener stops to work...

这是我的item_layout:

here is my item_layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:gravity="center">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp">
        <com.pkmmte.view.CircularImageView
            android:id="@+id/friends_new_photo_circularImageView"
            android:layout_gravity="center"
            android:layout_width="@dimen/user_friends_width"
            android:layout_height="@dimen/user_friends_height"
            android:src="@mipmap/ic_launcher"
            app:border="true"
            app:border_color="#EEEEEE"
            app:border_width="2dp"
            app:shadow="true"/>
        <ImageView
            android:id="@+id/friends_new_online_status_imageview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/online_status"
            android:layout_alignBottom="@+id/friends_new_photo_circularImageView"
            android:layout_alignRight="@+id/friends_new_photo_circularImageView"
            android:layout_marginRight="8dp"
            android:layout_marginBottom="5dp"/>
    </RelativeLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="1">
        <TextView
            android:id="@+id/friends_new_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:textStyle="bold"/>
        <ImageView
            android:id="@+id/friends_new_rating"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:src="@drawable/stars"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="35dp"
            android:onClick="true"
            android:text="Add"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="35dp"
            android:onClick="true"
            android:text="Dismiss"/>
    </LinearLayout>
</LinearLayout>

下面是片段的布局(与ListView控件):

here is fragment layout (with listView):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
    android:id="@+id/listview_friends"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="@style/ListViewStyle"/>

</LinearLayout>

和这里是我与onCreateView和onItemClickListener片段:

and here is my fragment with onCreateView and onItemClickListener:

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_friends_listview, container, false);
        ButterKnife.inject(this, rootView);

        String[] mNames = {
                "Example 1",
                "Example 2"
        };

        mFriendsAdapter = new FriendsAdapter(getActivity(), null, 0);

        List<String> mList = new ArrayList<>(Arrays.asList(mNames));
        ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(
                getActivity(),
                R.layout.list_item_friends_new,
                R.id.friends_new_name,
                mList
        );

        mListView.setOnItemClickListener(this);
        mListView.setAdapter(mAdapter);

        return rootView;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        FriendsFragment.openCurrentUser(getActivity());
    } 

因此​​,这里的问题是:

So here is the question:

是有可能使点击时listItems带有可点击按钮?
如果其真正的,不是怎么办呢?如果是假的? - 也许你有一些其他的解决办法。

is it possible to make clickable listItems with clickable buttons? and if its true, than how to do it? if it false - maybe you have some other solution?

推荐答案

我只是深深的点击找到解决方案,从here..but ...

I just found solution from here..but by deep clicking...

如果列表中的任何行项目包含聚焦的或可点击视图,则 OnItemClickListener 将无法工作。

If any row item of list contains focusable or clickable view then OnItemClickListener won't work.

行项目必须有像 A参数的android:descendantFocusability =blocksDescendants

在这里你可以看到的例子,你的列表项应该怎么看起来像

here you can see example, how your list item should look like

row_item.xml

row_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:descendantFocusability="blocksDescendants"
android:gravity="center_vertical" >

// your other widgets here

</LinearLayout>

或添加以下两行的内部意见

or add these two lines for the inner views

android:focusable="false"
android:focusableInTouchMode="false"

这篇关于OnItemClickLisener不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆