2012-02-01 7 views
8

저는 ListView를 사용하여 여러 항목을 표시합니다. 다음과 같이 내 row.xml : 나는 아래 활동에 myClick을 정의ListView에서 위치 가져 오기

<TextView android:text="text" 
android:id="@+id/tvViewRow" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
</TextView> 
<Button android:text="Click me!" 
android:id="@+id/BtnToClick" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:onClick="myClick"> 
</Button> 

그리고 :

public void myClick (View v) { 
LinearLayout vwParentRow = (LinearLayout)v.getParent(); 
//How to get the position 
} 

어떻게 위치를 알 수는 buttom의 클릭 수? 위치의 의미는 onListItemClick의 메소드와 같습니다.

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
} 
+0

시도 전기. – JoxTraex

답변

33

의 onclick에서 전에 질문을 찾아보세요,이 질문은 이전에 요청 된

public void DetailClick(View v) { 
ListView lv = getListView(); 
int position = lv.getPositionForView(v); 
} 
+1

정말 고마워요! 그 정보가 왜 그렇게 숨겨져 있습니까? – user1862770

1

예 onListItemClick의 위치는 목록에서 클릭 한 항목의 위치와 같습니다.

+0

myClick 메서드에서 위치를 얻는 방법을 의미합니다 – brian

1

질문을 올바르게 이해하면 각 행에 ListView 버튼이 있으며 버튼 클릭을받은 행을 알고 싶습니다. 버튼에 setOnClickListener()은 어떤가요? 내가 묻는 이유는 - 각 버튼에 대해 OnClickListener을 설정하면 이미 해당 버튼의 위치를 ​​알 수 있습니다.

+0

xml에서 onClick = "myClick"을 설정했습니다. – brian

+0

및 myClick – brian

+0

의 새 메서드를 정의합니다. 죄송합니다. 죄송합니다. – curioustechizen

2

또한 ListView에 대한 설명서를 읽고 사용 가능한 자습서를 살펴보아야합니다.

문서를 확인하십시오.

5

다음과 같이 시도 할 수 있습니다.

1 단계 : 사용자 정의 어댑터에서

@Override 
public view getView(int position, View convertView, ViewGroup parent){ 
.......//Perform your logic 
    convertView.findViewById(R.id.BtnToClick).setTag(position); 
    return convertView; 
} 

2 단계 : 리스너

public void myClick (View v) { 
    LinearLayout vwParentRow = (LinearLayout)v.getParent(); 
    position=(Integer) v.getTag(); 
    } 
+0

완벽한 솔루션! 감사! – Nick

관련 문제