2012-05-07 5 views
2

私はかなりの時間Android用に開発しています。私はネイティブに.Net開発者です。私が直面している問題は、自分のコードがひどいように見えて、Javaの\ Androidがコードにクリックイベントを表示するかどうかわからないことです。下のこの例では、私はクリックイベントでリストビューを持っています。Androidでリスナーをクリックする方がクリーンなアプローチはありますか?

list_view.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
      // TODO Auto-generated method stub 

     } 
    }); 

.Net。私は、コンポーネントの初期化メソッドでクリックイベントを設定してからメインコードページに実装しました。下にクリックイベントメソッドを使用するようにアンドロイドに指示するにはどうすればよいですか。多分このような何か?

list_view.setOnItemClickListener(onItemClick()); 

後でコードページにアクセスしてください。

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     // TODO Auto-generated method stub 

    } 
}); 

私はイベントを自分のコントロールに配線するためのよりクリーンなアプローチを探しているので、コードをよく読むことができます。もともと.Net開発者であったときにJavaとAndroidに移行するのは難しい作業です。

ありがとうございます!

編集は、私はここに私の仕事を掲示下の答えをいただき、ありがとうございます。

list_view.setOnItemClickListener(list_view_onItemClickListener); 


//below in my code 
private OnItemClickListener list_view_onItemClickListener = new OnItemClickListener(){ 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     // TODO Auto-generated method stub 

    } 

}; 
+0

これは、Javaでは[匿名クラス](http://littletutorials.com/2008/03/09/anonymous-inner-classes/)と呼ばれています。クラシックな内部クラスパターンを使用して、クラスの実装を記述して参照することができます。 – yorkw

答えて

3

thisを試すことができます!

+0

あなたは親切に私が行ったことの編集として投稿します! – meanbunny

1

が好きかどうかが、私は私のために最善の見つけたものなアプローチがあり、たとえばこれはあなたのlayout.xml

<Button1 android:id="@+id/btn1" android:onClick="btnHandle"> 

</Button1> 

<Button2 android:id="@+id/btn2 android:onClick="btnHandle"> 

</Button2> 

とあなたのactivity.Java

public void btnHandle(View v) 
{ 
    if(v.getId()==R.id.btn1){ 


}else if(v.getId()==R.id.btn2){ 

} 

になっているあなたはいけない、このアプローチによって実装する必要がありますどのインタフェースでも、ImageViewにボタンビューを変更しても、コード内で何もする必要はありません。 setOnClickListenerの場合はinstance variableタイプをButtonからImageViewに変更する必要があります。 }

+0

私は以前にこの方法を試しましたが、本当に満足していませんでした。主に私は1つのボタンのクリックをアクティビティごとに実装することしかできないと思ったのですが、あなたの例では、きれいなソリューションに確実に移行できました。 – meanbunny

関連する問題