OnItemClickLisener不起作用 [英] OnItemClickLisener does not work
问题描述
我正在试图与点击的项目列表视图中,每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屋!