2012-02-01 38 views
8

私はListViewを使用していくつかの項目を表示します。 以下のように私のrow.xml: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> 

そして、私は以下のように活動してmyClickを定義します。

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

湖底をクリックする位置を知るには? 位置の意味は、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

私はonClick = "myClick"をxmlに設定しました。 – 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

関連する問題