Androidのボタンリスニングイベント&カスタムコールバック関数
Androidのボタンリスニングイベント&カスタムコールバック関数
コードを书く时いつもコールバック関数を使って、ずっとどのように使うかを覚えていて、よく理解していません.今日は决心して资料を调べて普段书いたコードを加えて、まずButtonの傍受メカニズムを整理します:androidはいくつかのimageView、Buttonなどのコンポーネントに対して傍受メカニズムを设けて、私达がコンポーネントに対してクリックする时、コールバックonClick方法:
次に、カスタムコールバック関数がどのように実現されるかを見てみましょう.私のコード経験では、コールバックが最も多く使われているのは2つあります.1.ビューのUIクラスをカスタマイズしてインタフェースを定義し、設定方法でインタフェースを呼び出し者に露出します.2.RecyclerViewの書き込み時に、各ローとして理解されているItemのコンポーネントをアダプタでリスニングするか、またはItem全体をリスニングします.次に、この2つの実装を見てみましょう.//第2の実装
コールバックという概念をまとめると、コールバック関数とは、Aクラスに1つのインタフェースとそのインタフェースの抽象的な方法を定義する方法であるが、抽象的な方法は具体的に実現されず、Bクラスが実現する必要があり、Bクラスがこの方法を実現した後、自身はこの方法を呼び出すのではなく、Aクラスに渡し、Aクラスが呼び出すために、このメカニズムをコールバックと呼ぶ.最近プレッシャーが大きいので、最後に正のエネルギーを伝えて、努力して、黙って努力すれば、必ず成果があります!
コードを书く时いつもコールバック関数を使って、ずっとどのように使うかを覚えていて、よく理解していません.今日は决心して资料を调べて普段书いたコードを加えて、まずButtonの傍受メカニズムを整理します:androidはいくつかのimageView、Buttonなどのコンポーネントに対して傍受メカニズムを设けて、私达がコンポーネントに対してクリックする时、コールバックonClick方法:
//
Button Btn1 = (Button)findViewById(R.id.button1);//
Btn1.setOnClickListener(new Button.OnClickListener(){//
public void onClick(View v) {
String strTmp = " Button01";
Ev1.setText(strTmp);
}
});
//
Button Btn2 = (Button) findViewById(R.id.button2);//
Btn2.setOnClickListener(listener);//
}
// implements View.OnClickListener, onClick
@override
public void onClick(View v){
String strTmp=" Button02";
Ev1.setText(strTmp);
}
次に、カスタムコールバック関数がどのように実現されるかを見てみましょう.私のコード経験では、コールバックが最も多く使われているのは2つあります.1.ビューのUIクラスをカスタマイズしてインタフェースを定義し、設定方法でインタフェースを呼び出し者に露出します.2.RecyclerViewの書き込み時に、各ローとして理解されているItemのコンポーネントをアダプタでリスニングするか、またはItem全体をリスニングします.次に、この2つの実装を見てみましょう.//第2の実装
private OnCampaignClickListener mListener;
// , ,
public interface OnCampaignClickListener{
void onClick(View view,Campaign campaign);
}
// ,
public void setOnCampaignClickListener(OnCampaignClickListener listener){
this.mListener = listener;
}
imageViewBig.setOnClickListener(this);
imageViewSmallTop.setOnClickListener(this);
imageViewSmallBottom.setOnClickListener(this);
//
@Override
public void onClick( View v) {
anim(v);
}
//** , , , **
private void anim(final View v){
// ObjectAnimator
ObjectAnimator animator = ObjectAnimator.ofFloat(v,"rotationX",0.0F,360.0F)
.setDuration(200);
animator.addListener(new AnimatorListenerAdapter() {
//
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
HomeCampaign homeCampaign = mDatas.get(getLayoutPosition());
if(mListener !=null){
switch (v.getId()){
case R.id.imgview_big:
mListener.onClick(v,homeCampaign.getCpOne());
break;
case R.id.imgview_small_top:
mListener.onClick(v,homeCampaign.getCpTwo());
break;
case R.id.imgview_small_bottom:
mListener.onClick(v,homeCampaign.getCpThree());
break;
}
}
}
});
animator.start();
}
}
** **
** , , , **
// , WareListActivity
mAdatper.setOnCampaignClickListener(new HomeCatgoryAdapter.OnCampaignClickListener() {
@Override
public void onClick(View view, Campaign campaign) {
Intent intent = new Intent(getContext(), WareListActivity.class);
// value intent,key
intent.putExtra(Constants.COMPAINGAIN_ID,campaign.getId());
startActivity(intent);
}
});
コールバックという概念をまとめると、コールバック関数とは、Aクラスに1つのインタフェースとそのインタフェースの抽象的な方法を定義する方法であるが、抽象的な方法は具体的に実現されず、Bクラスが実現する必要があり、Bクラスがこの方法を実現した後、自身はこの方法を呼び出すのではなく、Aクラスに渡し、Aクラスが呼び出すために、このメカニズムをコールバックと呼ぶ.最近プレッシャーが大きいので、最後に正のエネルギーを伝えて、努力して、黙って努力すれば、必ず成果があります!