Android
इंटरफेस
खोज…
कस्टम श्रोता
इंटरफ़ेस को परिभाषित करें
//In this interface, you can define messages, which will be send to owner.
public interface MyCustomListener {
//In this case we have two messages,
//the first that is sent when the process is successful.
void onSuccess(List<Bitmap> bitmapList);
//And The second message, when the process will fail.
void onFailure(String error);
}
श्रोता बनाएँ
अगले चरण में हमें ऑब्जेक्ट में एक इंस्टेंस वेरिएबल को परिभाषित करना होगा जो MyCustomListener
माध्यम से कॉलबैक MyCustomListener
। और हमारे श्रोता के लिए सेटर जोड़ें।
public class SampleClassB {
private MyCustomListener listener;
public void setMyCustomListener(MyCustomListener listener) {
this.listener = listener;
}
}
श्रोता को लागू करें
अब, अन्य वर्ग में, हम SampleClassB
उदाहरण बना सकते हैं।
public class SomeActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
SampleClassB sampleClass = new SampleClassB();
}
}
इसके बाद हम अपने श्रोता को दो तरीकों से sampleClass
सेट कर सकते हैं:
हमारी कक्षा में MyCustomListener
लागू MyCustomListener
है:
public class SomeActivity extends Activity implements MyCustomListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
SampleClassB sampleClass = new SampleClassB();
sampleClass.setMyCustomListener(this);
}
@Override
public void onSuccess(List<Bitmap> bitmapList) {
}
@Override
public void onFailure(String error) {
}
}
या बस एक अनाम आंतरिक वर्ग को तत्काल:
public class SomeActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
SampleClassB sampleClass = new SampleClassB();
sampleClass.setMyCustomListener(new MyCustomListener() {
@Override
public void onSuccess(List<Bitmap> bitmapList) {
}
@Override
public void onFailure(String error) {
}
});
}
}
ट्रिगर श्रोता
public class SampleClassB {
private MyCustomListener listener;
public void setMyCustomListener(MyCustomListener listener) {
this.listener = listener;
}
public void doSomething() {
fetchImages();
}
private void fetchImages() {
AsyncImagefetch imageFetch = new AsyncImageFetch();
imageFetch.start(new Response<Bitmap>() {
@Override
public void onDone(List<Bitmap> bitmapList, Exception e) {
//do some stuff if needed
//check if listener is set or not.
if(listener == null)
return;
//Fire proper event. bitmapList or error message will be sent to
//class which set listener.
if(e == null)
listener.onSuccess(bitmapList);
else
listener.onFailure(e.getMessage());
}
});
}
}
मूल श्रोता
एंड्रॉइड विकास में अतुल्यकालिक कॉलबैक बनाने के लिए "श्रोता" या "पर्यवेक्षक" पैटर्न सबसे आम रणनीति है।
public class MyCustomObject {
//1 - Define the interface
public interface MyCustomObjectListener {
public void onAction(String action);
}
//2 - Declare your listener object
private MyCustomObjectListener listener;
// and initialize it in the costructor
public MyCustomObject() {
this.listener = null;
}
//3 - Create your listener setter
public void setCustomObjectListener(MyCustomObjectListener listener) {
this.listener = listener;
}
// 4 - Trigger listener event
public void makeSomething(){
if (this.listener != null){
listener.onAction("hello!");
}
}
अब आपकी गतिविधि पर:
public class MyActivity extends Activity {
public final String TAG = "MyActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
MyCustomObject mObj = new MyCustomObject();
//5 - Implement listener callback
mObj.setCustomObjectListener(new MyCustomObjectListener() {
@Override
public void onAction(String action) {
Log.d(TAG, "Value: "+action);
}
});
}
}
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow