RxNetworking : Single Service class handle multiple request
I have single API Web Service class to handle multiple Reqeust using RxNetworking.
STEP - 1 : Add INETERNET Permission
---------------------------------------------------
<uses-permission android:name="android.permission.INTERNET"/>
---------------------------------------------------
STEP - 2 : Add library in App-Level Gradle
---------------------------------------------------
//REACTIVE
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'io.reactivex.rxjava2:rxjava:2.0.8'
implementation 'com.amitshekhar.android:android-networking:1.0.1'
implementation 'com.amitshekhar.android:jackson-android-networking:1.0.1'
-------------------------------------------
public class RxNetworkingClass {
private static RxNetworkingClass instance = null;
CompletionHandler handler;
public void setCompletionHandler(CompletionHandler handler){
this.handler = handler;
}
private RxNetworkingClass(){ }
public static RxNetworkingClass getProgressInstance()
{
if(instance == null)
{ instance = new RxNetworkingClass(); }
return instance;
}
public void callWebServiceForRxNetworking(Activity context, String url, Object paramClass ) {
AndroidNetworking.post(url)
.addBodyParameter(paramClass)
.setPriority(Priority.MEDIUM)
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
// do anything with response
handler.handle(response);
}
@Override
public void onError(ANError error) {
}
});
}
interface CompletionHandler {
void handle(JSONObject object);
}
}
STEP - 4 : activity_main.xml
-------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="javalibrarydemo.library.app.com.rxnetworkingtest1.MainActivity">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hindu"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintVertical_bias="0.3"
/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Muslim"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintVertical_bias="0.8"
/>
</android.support.constraint.ConstraintLayout>
STEP - 5 : MainActivity.java
-------------------------------------------
public class MainActivity extends AppCompatActivity implements RxNetworkingClass.CompletionHandler{
Button btn1, btn2;
String url = "https://iitiimshaadi.com/api/caste.json";
String token = "d7f43182da347f975350c02c30689e30";
String religionH = "hindu";
String religionM = "muslim";
int status = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RxNetworkingClass rxNetworkingClass = RxNetworkingClass.getProgressInstance();
rxNetworkingClass.setCompletionHandler(this);
btn1 = (Button)findViewById(R.id.button1) ;
btn2 = (Button)findViewById(R.id.button2) ;
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//
status = 1;
CasteRequest casteRequest = new CasteRequest();
casteRequest.token = token;
casteRequest.religion = religionH;
RxNetworkingClass.getProgressInstance().callWebServiceForRxNetworking(MainActivity.this, url, casteRequest);
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//
status = 2;
CasteRequest casteRequest = new CasteRequest();
casteRequest.token = token;
casteRequest.religion = religionM;
RxNetworkingClass.getProgressInstance().callWebServiceForRxNetworking(MainActivity.this, url, casteRequest);
}
});
}
@Override
public void handle(JSONObject object) {
if(status == 1){
showOpt1(object) ;
}else if (status == 2){
showOpt2(object) ;
}
}
public void showOpt1(JSONObject object){
new AlertDialog.Builder(MainActivity.this)
.setMessage("Output 1-->\n "+ object.toString())
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.show();
}
public void showOpt2(JSONObject object){
new AlertDialog.Builder(MainActivity.this)
.setMessage("Output 2-->\n "+ object.toString())
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.show();
}
}
------------------------------------------
-------------------------------------------
public class MainActivity extends AppCompatActivity implements RxNetworkingClass.CompletionHandler{
Button btn1, btn2;
String url = "https://iitiimshaadi.com/api/caste.json";
String token = "d7f43182da347f975350c02c30689e30";
String religionH = "hindu";
String religionM = "muslim";
int status = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RxNetworkingClass rxNetworkingClass = RxNetworkingClass.getProgressInstance();
rxNetworkingClass.setCompletionHandler(this);
btn1 = (Button)findViewById(R.id.button1) ;
btn2 = (Button)findViewById(R.id.button2) ;
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//
status = 1;
CasteRequest casteRequest = new CasteRequest();
casteRequest.token = token;
casteRequest.religion = religionH;
RxNetworkingClass.getProgressInstance().callWebServiceForRxNetworking(MainActivity.this, url, casteRequest);
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//
status = 2;
CasteRequest casteRequest = new CasteRequest();
casteRequest.token = token;
casteRequest.religion = religionM;
RxNetworkingClass.getProgressInstance().callWebServiceForRxNetworking(MainActivity.this, url, casteRequest);
}
});
}
@Override
public void handle(JSONObject object) {
if(status == 1){
showOpt1(object) ;
}else if (status == 2){
showOpt2(object) ;
}
}
public void showOpt1(JSONObject object){
new AlertDialog.Builder(MainActivity.this)
.setMessage("Output 1-->\n "+ object.toString())
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.show();
}
public void showOpt2(JSONObject object){
new AlertDialog.Builder(MainActivity.this)
.setMessage("Output 2-->\n "+ object.toString())
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.show();
}
}
STEP - 6 : CasteRequest.java
-------------------------------------------
-------------------------------------------
public class CasteRequest {
String token;
String religion;
}
-------------------------------------------
22
Comments
Post a Comment