3

私は3つのアイテムのリストを持っています:

[image_1] [text_1]
[image_2] [text_2]
[image_3] [text_3]

ここに画像の説明を入力してください

ListViewを使用していません。代わりに、RelativeLayoutを使用しました。

TextViewとImageViewの両方のOnClickListenerをどのように処理しますか?

list_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent" >

<ImageView
    android:id="@+id/image_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="21dp"
    android:layout_marginTop="21dp"
    android:src="@drawable/calbutton" />

<TextView
    android:id="@+id/text_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/image_1"
    android:layout_toRightOf="@+id/image_1"
    android:text="TextView" />

   <ImageView
    android:id="@+id/image_2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBelow="@+id/image_1"
    android:layout_below="@+id/image_1"
    android:layout_marginLeft="21dp"
    android:layout_marginTop="21dp"
    android:src="@drawable/calbutton" />

   <TextView
     android:id="@+id/text_2"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignLeft="@+id/text_1"
     android:layout_alignTop="@+id/image_2"
     android:text="TextView" />

   <ImageView
    android:id="@+id/image_3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBelow="@+id/image_2"
    android:layout_below="@+id/image_2"
    android:layout_marginLeft="21dp"
    android:layout_marginTop="21dp"
    android:src="@drawable/calbutton" />  

   <TextView
       android:id="@+id/text_3"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignTop="@+id/image_3"
       android:layout_toRightOf="@+id/image_3"
       android:text="TextView" />

</RelativeLayout>
4

8 に答える 8

5

親としてLinearLayoutを追加するのと同じように、ビューと呼び出しクリックリスナーの両方に1つの親ビューをその親ビューに追加できます。

<LinearLayout android:id="@+id/firstparent">
<Imageview/>
<TextView/>
</LinearLayout>
<LinearLayout android:id="@+id/secondparent">
<Imageview/>
<TextView/>
</LinearLayout>
<LinearLayout android:id="@+id/thirdparent">
<Imageview/>
<TextView/>
</LinearLayout>
<LinearLayout android:id="@+id/forthparent">
<Imageview/>
<TextView/>
</LinearLayout>

次に、クリックリスナーをに設定してLinearLayout、imageviewまたはtextviewのどちらをクリックしても同じイベントを取得できるようにします。

次に、のようなレイアウトごとにonClickListnerを登録します。

layout1.setOnClickListener(this);
layout2.setOnClickListener(this);
layout3.setOnClickListener(this);
layout4.setOnClickListener(this);

@Override
public void onClick ( View v )
{
     if ( v == layout1 ) 
     {
            // your code...
     }
     else if(v == layout2){
         // your code...
     }
   ////  add others...
}
于 2013-03-12T04:31:23.797 に答える
2

imageviewとをtextview中に入れlinear layoutます。次にonClickLListenerLinearLayout

<RelativeLayout ...... >

    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"
        android:orientation="vertical" >

        <ImageView
        android:id="@+id/image_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="21dp"
        android:layout_marginTop="21dp"
        android:src="@drawable/calbutton" />

        <TextView
           android:id="@+id/text_1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignTop="@+id/image_1"
           android:layout_toRightOf="@+id/image_1"
           android:text="TextView" />

    </LinearLyaout>

  .......

</RelativeLayout>
于 2013-03-12T04:33:16.880 に答える
2

行の任意の場所でクリックするために呼び出されるをListView追加できます。onItemClickListener

于 2013-03-12T04:35:49.363 に答える
1

OnClickListener()beflowのようにJavaファイルにを実装するだけです。

public yourClassName extends Activity implements OnClickListener
{

    ....your code

    // register for onClickListener
    text1.setOnClickListener(this); 
    // register same for other textboxes & imageview.

    @Override
    public void onClick ( View view )
    {
         if ( view == text1 ) // assuming text1 is your text_1 of your .xml file
         {
                // do stuff
         }
         ... 
         // same for other textboxes & image view.
    }
}
于 2013-03-12T04:31:26.593 に答える
1

このようなすべてのテキストビューとイメージビューにOnClickListenersを使用するだけです

findViewById(R.id.image_1).setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
       ////// write your code here
   }
});
于 2013-03-12T04:32:22.383 に答える
0

ビューごとに異なるアクションを持つ1つのハンドラーが必要な場合は、次のように実行できます。

TextView tv;
ImageView iv;
View.OnClickListener myOnlyhandler = new View.OnClickListener() {
  public void onClick(View v) {
      if( tv.getId() == ((TextView)v).getId() ){
          // it was the textview
      }
      else if(iv.getId() == ((ImageView)v).getId() ){
          // it was the imageview
      }
  }
}

または、2つのビューをグループ化する場合は、それらをコンテナ(RelativeLayout、LinearLayoutなど)に配置し、OnClickListenerをコンテナに割り当てます。

于 2013-03-12T04:33:48.293 に答える
0

これはコードです

TextView tv[] = new TextView[subCategory.length];
    for (int i = 0; i < subCategory.length; i++) {
            tv[i] = new TextView(this);
            tv[i].setText(subCategory[i]);
            tv[i].setId(i);
            sCategoryLayout.addView(tv[i]);
            tv[i].setOnClickListener(onclicklistener);
        }    

onclicklistenerメソッド:

OnClickListener onclicklistener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if(v == tv[0]){
            //do whatever you want....
        }
    }
};
于 2013-03-12T04:34:13.553 に答える
0

image / button / textview / edittextなどの両方に以下のようにonClickイベントを設定し、アクティビティにメソッドを含めることができます。

ここに画像の説明を入力してください

<Button
    android:id="@+id/some_ui_element"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#00FFFFFF"
    android:onClick="onClickButton"
    android:shadowColor="#000"
    android:text="@string/sometitle"
    android:textColor="@android:color/primary_text_dark_nodisable" />

/**
 * onClickView() called
 * @param v
 */
public void onClickView(View v) {
  //Do something
      switch(v.getId()){
         case R.id.someuielement :
         break;
         ...
         ...
      }
}
于 2013-03-12T04:41:21.667 に答える