Как создать собственный интерфейс Listener в android?

Может ли кто-нибудь помочь мне создать пользовательский интерфейс прослушивателя с некоторыми фрагментами кода?

public interface MyListener { // you can define any parameter as per your requirement public void callback(View view, String result); } public class MyActivity extends Activity implements MyListener { @override public void onCreate(){ MyButton m = new MyButton(this); } // method invoke when mybutton will click @override public void callback(View view, String result) { // do your stuff here } } public class MyButton { MyListener ml; // constructor MyButton(MyListener ml) { this.ml = ml; } public void MyLogicToIntimateOthere() { ml.callback(this, "success"); } } 

Пожалуйста, прочитайте образец наблюдателя

Интерфейс прослушивателя

 public interface OnEventListener { void onEvent(EventResult er); // or void onEvent(); as per your need } 

То в своем классе скажите «Класс Event »

 public class Event { private OnEventListener mOnEventListener; public void setOnEventListener(OnEventListener listener) { mOnEventListener = listener; } public void doEvent() { /* * code code code */ // and in the end if (mOnEventListener != null) mOnEventListener.onEvent(eventResult); // event result object :) } } 

В вашем классе драйвера MyTestDriver

 public class MyTestDriver { public static void main(String[] args) { Event e = new Event(); e.setOnEventListener(new OnEventListener() { public void onEvent(EventResult er) { // do your work. } }); e.doEvent(); } } 

Я создал Generic AsyncTask Listener, которые получают результат из отдельного класса AsycTask и передают его CallingActivity с помощью обратного вызова интерфейса.

 new GenericAsyncTask(context,new AsyncTaskCompleteListener() { public void onTaskComplete(String response) { // do your work. } }).execute(); 

Интерфейс

 interface AsyncTaskCompleteListener<T> { public void onTaskComplete(T result); } 

GenericAsyncTask

 class GenericAsyncTask extends AsyncTask<String, Void, String> { private AsyncTaskCompleteListener<String> callback; public A(Context context, AsyncTaskCompleteListener<String> cb) { this.context = context; this.callback = cb; } protected void onPostExecute(String result) { finalResult = result; callback.onTaskComplete(result); } } 

Посмотрите на это , этот вопрос для более подробной информации.

Создать интерфейс прослушивателя.

 public interface YourCustomListener { public void onCustomClick(View view); // pass view as argument or whatever you want. } 

И создайте метод setOnCustomClick в другом действии (или фрагменте), где вы хотите применить свой пользовательский прослушиватель ……

  public void setCustomClickListener(YourCustomListener yourCustomListener) { this.yourCustomListener= yourCustomListener; } 

Вызовите этот метод из своего первого действия и передайте интерфейс прослушивателя …

В Android вы можете создать интерфейс, такой как Listener, и ваша деятельность реализует его, но я не думаю, что это хорошая идея. Если у нас есть много компонентов для прослушивания изменений их состояния, мы можем создать BaseListener, реализующий интерфейс Listener, и использовать код типа для их обработки. Мы можем связать этот метод при создании XML-файла, например:

 <Button android:id="@+id/button4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button4" android:onClick="Btn4OnClick" /> 

И исходный код:

  public void Btn4OnClick(View view) { String strTmp = "点击Button04"; tv.setText(strTmp); } 

Но я не думаю, что это хорошая идея …

Простой способ сделать этот подход. Сначала реализует OnClickListeners в вашем классе Activity.

Код:

 class MainActivity extends Activity implements OnClickListeners{ protected void OnCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.activity_main.xml); Button b1=(Button)findViewById(R.id.sipsi); Button b2=(Button)findViewById(R.id.pipsi); b1.SetOnClickListener(this); b2.SetOnClickListener(this); } public void OnClick(View V) { int i=v.getId(); switch(i) { case R.id.sipsi: { //you can do anything from this button break; } case R.id.pipsi: { //you can do anything from this button break; } } }