Android:ListView中的ItemClickListener,包含GridView

时间:2015-08-05 10:47:45

标签: android listview gridview onitemclicklistener

我有一个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上获得我的陈词滥调?

1 个答案:

答案 0 :(得分:0)

所以,我能够自己解决问题。也许这对任何人都有帮助:

我覆盖自定义gridview的dispatchTouchEvent方法,以便它不会触及事件

@Override
public boolean dispatchTouchEvent(MotionEvent event) {
    return false;
}

此外,我在ListAdapter的getView方法中为每个listitem设置了一个简单的ClickListener,而不是onItemClickListener,它可以工作。