Android/カスタムListener
提供: 初心者エンジニアの簡易メモ
2016年11月16日 (水) 11:51時点におけるAdmin (トーク | 投稿記録)による版 (ページの作成:「==独自Listenerを作る方法== 足し算処理を例にする -CustomData.java public class CustomData { public int code; public String message; public C...」)
独自Listenerを作る方法
足し算処理を例にする
-CustomData.java
public class CustomData { public int code; public String message; public CustomData(int code, String message) { this.code = code; this.message = message; } }
-CustomListener.java
public interface CustomListener { void onLoad(CustomData data); void onStart(CustomData data); void onSuccess(CustomData data); void onError(CustomData data); void onFinish(CustomData data); void onClose(CustomData data); }
-CustomTask.java
public class CustomTask { private CustomListener mListener; private CustomData data; CustomTask() { data = new CustomData(123, "hello"); } public void exec(int num, int addnum, int sum) { mListener.onLoad(data); mListener.onStart(data); if (num + addnum == sum) { data.message = "success " + num + "+" + addnum + "=" + sum; mListener.onSuccess(data); } else { data.message = "error " + num + "+" + addnum + "!=" + sum; mListener.onError(data); } mListener.onFinish(data); mListener.onClose(data); } public void setCustomListener(CustomListener listener) { mListener = listener; } }
-メイン処理(MainActivity.java)
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); CustomListener listener = new CustomListener() { @Override public void onLoad(CustomData data) { Log.i("test", "task onLoad()"); } @Override public void onStart(CustomData data) { Log.i("test", "task onStart()"); } @Override public void onSuccess(CustomData data) { Log.i("test", "task onSuccess() code=" + data.code + " " + data.message); } @Override public void onError(CustomData data) { Log.i("test", "task onError() code=" + data.code + " " + data.message); } @Override public void onFinish(CustomData data) { Log.i("test", "task onFinish()"); } @Override public void onClose(CustomData data) { Log.i("test", "task onClose()"); } }; CustomTask task = new CustomTask(); task.setCustomListener(listener); task.exec(1, 1, 2); // 処理1 task.exec(1, 1, 3); // 処理2 } }
処理1
test: onLoad() test: onStart() test: onSuccess() code=123 success 1+1=2 test: onFinish() test: onClose()
処理2
test: onLoad() test: onStart() test: onError() code=123 error 1+1!=3 test: onFinish() test: onClose()