2015-08-05 1 views
0

У меня есть ListView, и каждый элемент в этом списке содержит gridview и текстовое представление заголовка. Теперь я хочу узнать, когда пользователь нажимает на любой элемент всего объекта, поэтому я попытался установить onItemClickListener. К сожалению, это не работает, потому что я не получил журнал отладки, который я добавил в метод click.Android: ItemClickListener в ListView, который содержит GridView

Мой 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"/> 

Update: Вызов 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 вместо списка, но я не уверен, что это правильно. Может ли кто-нибудь указать, что мне нужно сделать, чтобы получить мои клики в списке?

+0

Можете ли вы опубликовать свой onclick? – Sree

+0

обновил мой вопрос – jennymo

+0

http://stackoverflow.com/a/5726131 посмотреть это – Sree

ответ

0

Итак, я смог решить проблему самостоятельно. Может быть, это полезно для тех, кто:

Я переопределить метод dispatchTouchEvent моего пользовательского GridView, так что он не получает сенсорное событие

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

Кроме того, вместо onItemClickListener я поставил простой ClickListener в каждый listitem в методе getView моего ListAdapter, и он сработал.