我想为我的gridView实现OnItemClickListener
。
我在我的片段中定义了这样的监听器:
GridView gridview = (GridView)view.findViewById(R.id.gridview);
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d("imagedata","Position clicked: "+ position);
}
});
List<ItemObject> allItems = ((MainActivity) getActivity()).getTinkeractivities(); //getJSON data
CustomAdapter customAdapter = new CustomAdapter(getActivity(), allItems, "home");
gridview.setAdapter(customAdapter);
gridView
中每个项目的我的布局如下:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="false"
card_view:cardUseCompatPadding="true"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="4dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp">
<ImageView
android:id="@+id/screen_shot"
android:layout_width="80dp"
android:layout_height="80dp"
android:contentDescription="@string/hello_world"
android:layout_alignParentTop="true"
android:scaleType="centerCrop"
android:layout_centerHorizontal="true"/>
<TextView
android:id="@+id/activity_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/screen_shot"
android:layout_alignLeft="@+id/screen_shot"
android:text="@string/hello_world"
android:inputType="text"
android:textColor="#000"
android:layout_marginTop="8dp"
android:textSize="12sp"/>
<TextView
android:id="@+id/theme_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/activity_name"
android:layout_alignLeft="@+id/activity_name"
android:text="@string/hello_world"
android:textSize="12sp"
android:layout_marginTop="4dp"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
但是,点击监听器似乎不起作用。我尝试在卡片视图的所有子视图中将android:clickable
设置为false
,并尝试在卡片视图上将其设置为false
,但没有成功。
我能够在CustomAdapter
中为每个行视图成功设置一个点击监听器,但我不想采用这种方法,因为我想在我的custom action bar上进行一些批量选择gridview使用标准实现。否则,我将不得不处理longPress
事件,并为我的行项目设置checked
状态,然后努力从适配器中实现自定义操作栏。
要实现干净的实现,我想在片段中定义click
侦听器。我在Stackoverflow上阅读了几篇博文和相关答案,所有这些都建议采用适配器方法,并且没有指定如何以正确的方式使其在活动或片段中工作。
我想知道在我的案例中是否无法设置OnItemClickListener
。如果不是,那么我该如何调试并解决问题呢?
答案 0 :(得分:2)
您可以尝试添加
android:descendantFocusability="blocksDescendants"
到您的网格项目
编辑:
否则,如果您有可以阻止可以添加的点击的按钮:
android:focusable="false"
android:focusableInTouchMode="false"