我有一个ListView,此列表视图中的每个项目都包含一个gridview和一个标题textview。现在我想要识别用户何时点击整个项目的任何位置,因此我尝试设置onItemClickListener。不幸的是,这似乎不起作用,因为我没有得到我添加到click方法的调试日志。
我的ListView如下所示
<ListView
android:id="@+id/listview_previous_issues"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants"
android:layout_marginBottom="@dimen/article_separator_margin_topbottom"
android:divider="@null"
android:dividerHeight="0dp" />
列表项的GridView是这样的:
<GridView
android:id="@+id/read_news"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="auto_fit"
android:columnWidth="@dimen/settings_and_issues_read_issues"
android:stretchMode="columnWidth"
android:verticalSpacing="@dimen/paddingSmall"
android:horizontalSpacing="@dimen/paddingSmall"
android:listSelector="#00000000"
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"/>
更新:onItemClickListener的调用
mIssueList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d("debug", "Klicke auf Ressort mit der Id " + pRessorts.get(position).mRessortId);
//Setze die Ressort-ID welche Topnews angezeigt werden
SharedPreferenceHelper.setLongForKey(Constants.PREFS_SHOWN_TOPNEWS_ID, pRessorts.get(position).mRessortId);
//Refreshe die Ansicht
mContext.refresh();
}
});
我认为GridView正在获取click事件而不是listview,但我不确定这是否正确。任何人都可以指出我必须做些什么才能在listview上获得我的陈词滥调?
答案 0 :(得分:0)
所以,我能够自己解决问题。也许这对任何人都有帮助:
我覆盖自定义gridview的dispatchTouchEvent方法,以便它不会触及事件
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
return false;
}
此外,我在ListAdapter的getView方法中为每个listitem设置了一个简单的ClickListener,而不是onItemClickListener,它可以工作。