2011-11-26 3 views
2

각 항목에 버튼이있는 ListView가 있습니다. 해당 항목에 단추의 OnClick 이벤트보다 많은 정보 (id, position)가 포함되어 있으므로 항목 클릭으로 인해 목록의 OnItemClick 이벤트가 발생합니다. fire OnItem 버튼을 클릭했을 때 listview를 클릭하십시오.

이것은 목록에서 중요한 작업입니다. 그 이유는 버튼이 필요하고 일반 항목을 클릭하면 발동 될 수 있기 때문입니다 (버튼을 포커스 가능하게 만드는 것이 트릭을 수행 할 것으로 추측합니다).

이것이 가능합니까?

답변

-1

list.In getView() 메소드에 대한 자신의 어댑터를 만들려고 당신의 필요한 요구 사항을보십시오.

setListAdapter(new ArrayAdapter<string>(this, R.layout.list_item, strings) { 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
View row; 

if (null == convertView) { 
row = mInflater.inflate(R.layout.list_item, null); 
} else { 
row = convertView; 
} 

Button bt1 = (Button) row.findViewById(android.R.id.bt1); 
bt1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v){ 
     //you will get position and do necessary method 
     } 
}); 

return row; 
} 
}); 
+0

(해당 위치의 마지막 var을 사용하는 한). 덕분에 . – Shlomi

+0

id 원하는가? 목록 항목에있는 모든 항목은 무엇입니까? – freshDroid

+0

내 문제는 사실 더 복잡합니다. 때로는 onClick에 도달하는 위치가 잘못되었습니다. 그러나 그것은 또 다른 문제입니다 ... – Shlomi

2

행을 클릭 할 수 있습니까? 행이 클릭 가능한지 여부에 따라 다음 중 하나를 수행합니다.

  1. 당신은 단지 버튼을 clickable=false을 설정하고, 터치, 즉 목록보기 버튼에 행 및 onItemClickListener 다음 해당 행

  2. 에 대한 통지를해야한다, 부모까지 propergate 할 수 당신은 버튼에있는 행의 위치를보고하는 버튼 태그 (View.setTag(..))를 설정 및 onClickListener

  3. 에서이 태그를 읽을 수 당신이 수 페이지에 freshDroid가 제시 한 답을 수행하지만 것 비효율적이다 새로운 OnClickListener을 생성 할 때마다보기가 생성/재활용되므로 추가 GC 작업이 발생합니다.

+0

나는 이런 식으로 일했습니다. 버튼에 clickable = false하지만 onItemClickListener는 전파되지 않습니다. 이 방법이 당신을 위해 일합니까? –