2014-02-11 4 views
0

Google에서 스택 오버플로를 많이 검색했으며이를 발견했습니다 : OnItemCLickListener not working in listview ANDROID. 그러나 햇빛의 대답은 내 경우에는 효과가없는 것 같습니다. 다른 대답은 모두 비슷한 것입니다.내 ListView가 onItemClick을 호출하지 않는 이유는 무엇입니까?

나는 다음과 같은 방법을 시도 :

은 위의 링크에 설명 된대로 XML을 사용하여 ViewHolder

TextView.setFocusable(false)TextView.setClickable(false)을 추가 내 목록 항목 XML로 android:focusable="false"를 추가합니다.

하지만 아무 것도 작동하지 않습니다.

은 여기 내 XML과 자바 코드입니다 :

list_item.xml :

<?xml version="1.0" encoding="utf-8"?> 

<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:focusable="false" 
android:paddingTop="2dp" 
android:gravity="center_vertical" > 

<TextView 
    android:id="@+id/ninegrid_number_list_choice" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textSize="@dimen/ninegrid_number_listchoice_text_size" 
    android:gravity="center" 
    > 
</TextView> 
</LinearLayout> 

getView INT 목록 adapter.java :

@Override 
    public View getView(int position, View convertView, final ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.list_item, null); 
      holder = new ViewHolder(); 
      holder.mTextView = (TextView)convertView.findViewById(R.id.ninegrid_number_list_choice); 
      holder.mTextView.setFocusable(false); 
      holder.mTextView.setClickable(false); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder)convertView.getTag(); 
     } 

     holder.mTextView.setText(mList.get(position)); 
     holder.mTextView.setTextColor(mTextColor); 
     holder.mTextView.setFocusable(false); 
     holder.mTextView.setClickable(false); 
     return convertView; 
    } 

편집 :

: 내 활동
listchoice.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); 
listChoice.setOnItemClickListener(new OnItemClickListener() { 
@Override 
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
    long arg3) { 

     Log.v(tag, "sdf"); 
} 
}); 
+1

onItemClick 리스너를 등록한 코드가 표시되지 않습니다. 청취자를 제대로 등록하고 있습니까? –

+0

어디에서 onItemClickListener()를 설정하면 해당 코드가 표시됩니다 !! –

+0

제발 편집하십시오. – suitianshi

답변

0

어댑터의 getView() 메소드에서 convertView의 onclick 이벤트를 리턴하기 전에 설정할 수 있습니다. 해당 이벤트 핸들러는 onItemClick으로 처리 될 수 있습니다.

+0

예, 알고 있습니다. 그러나 나는'listSelector'도 사용하고 있습니다. textView에 대한 클릭 리스너를 설정하면 목록 선택기가 작동하지 않는다는 것을 테스트했습니다. 그럼 내가 뭘해야하지? – suitianshi

0

버튼, 이미지 버튼 등을 사용할 때 listview 클릭 리스너가 작동하지 않습니다. 텍스트 뷰만을 사용하므로 문제가되지 않습니다. linearlayout 선형 레이아웃에서 android:focusable="false"을 사용할 필요가 없습니다. 이 코드는 버튼을 사용하는 동안에 만 사용되었습니다. 또한 코드를 사용할 필요가 없습니다. holder.mTextView.setClickable(false); 텍스트는 단추가 아니므로 아무런 초점도 없습니다. u는 그것이 아니라 텍스트 뷰에있는 목록의 셀을 클릭합니다 클릭하면 ... 그래서 간단하게 팽창 한 다음 목록보기에 사용자 정의 어댑터를 설정 한 후 ... 목록보기로 setonitemclicklistner ....

업데이트] 답변

convertView.setOnClickListener (new OnItemClickListener (position));

이것은 확실하게 작동합니다 ...

+0

감사합니다. 시도가있을 것입니다 – suitianshi

+0

'setClickable'과'android : focusable'에 대한 호출을 제거했지만 아직 도움이 안됩니다 – suitianshi

+0

@suitianshi ans를 업데이트했습니다 ... 이제보십시오 ... –

관련 문제