0

私は現在、カスタムリストビューを必要とするアプリを作成しています。私のリストビューはすべて問題ありませんが、onClickListenerをlist_row.xmlで定義されたビューに設定する方法を知る必要があります。アイテム全体と、この1つの内部ビューにonclicklistenerが必要です。説明するのがとても難しいので、私の問題を示すために写真を添付し​​ます>。<写真(ドロップボックス):https ://www.dropbox.com/s/72xdxuwz47vl7s5/problem.png

[私の問題]が示すビューをクリックすると呼び出される関数が必要です。そのImageViewは画像でいっぱいです。

4

2 に答える 2

0

各行に OnClickListener を設定するには、現在のアダプタを拡張してgetView()メソッドをオーバーライドするだけです。そこでは、通常どおりに特定のリスナーを定義できます。

これについては、Romain Guy によるこのGoogle トークで詳しく説明されています。

于 2013-01-08T22:05:38.177 に答える
0

これは、あなたが達成したいこととかなり似ていると思われる前に私がやったことです。

まず、 に対して を宣言onItemClickListenerしますListView。これにより、標準のリスト アイテムのタップ (つまり、リスト アイテムの内側で、関心のある内側のビュー領域の外側のタップ) が処理されます。コード内のさまざまな場所でこれを行うことができますonCreate()が、一般的な場所です。

例:

mListView.setOnItemClickListener( new OnItemClickListener() {
  @Override
  public void onItemClick( AdapterView<?> parent, View view, int position, long id ) {
    // Handle standard list item tap
    // ...
  }
} );

onClickListener次に、アダプターのメソッド内で内部ビューに必要なものを宣言して、内部ビューgetView()でクリック/タップイベントを処理できます。

例:

@Override
public View getView( int position, View convertView, ViewGroup parent ) {
  LinearLayout itemView;

  // Inflate layout XML, etc.
  // ...

  // Find subviews in layout
  ImageView innerView = (ImageView) itemView.findViewById( R.id.myInnerViewId );

  // ...

  // Set up onClickListener for inner view
  innerView.setOnClickListener( new OnClickListener() {
    @Override
    public void onClick( View v ) {
      // Handle inner view tap
      // ...
    }
  } );

  // ...
}
于 2013-01-08T22:11:03.690 に答える