Sunday, 3 February 2019

mvvm sample

MVVM sample


android{

dataBinding {
enabled = true
}
}

usermodel:

public class User {

    private String username;
    private String password;
    public String usernamehint;
    public String passwordhint;


    public User() {
    }

    public User(String usernamehint, String passwordhint) {
        this.usernamehint = usernamehint;
        this.passwordhint = passwordhint;
    }
}




viewmodel:

public class UserModel extends BaseObservable {

    private String username;
    private String password;
    public String usernamehint;
    public String passwordhint;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
        notifyPropertyChanged(R.id.email);
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
        notifyPropertyChanged(R.id.pass);
    }

    public String getUsernamehint() {
        return usernamehint;
    }

    public void setUsernamehint(String usernamehint) {
        this.usernamehint = usernamehint;
    }

    public String getPasswordhint() {
        return passwordhint;
    }

    public void setPasswordhint(String passwordhint) {
        this.passwordhint = passwordhint;
    }

    public UserModel(User user) {
        this.usernamehint =user.usernamehint;
        this.passwordhint =user.passwordhint;
    }
}



interface:

public interface UserLogin {

    void onClickLogin();
}

activity:

private ActivityMainBinding activityMainBinding;
    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);        activityMainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main);
        UserModel um =new UserModel(new User("User Name","Password"));
        activityMainBinding.setLogin(um);

        activityMainBinding.setOnClickButtion(new UserLogin() {
            @Override            public void onClickLogin() {
                Toast.makeText(getApplicationContext(),""+activityMainBinding.getLogin().getUsername(),Toast.LENGTH_LONG).show();
            }
        });


    }

layout:

<?xml version="1.0" encoding="utf-8"?><layout  xmlns:android="http://schemas.android.com/apk/res/android"         xmlns:tools="http://schemas.android.com/tools"         xmlns:app="http://schemas.android.com/apk/res-auto">


<data>
    <variable            name="Login"            type="mvvm.mvvmsample.viewmodel.UserModel">
    </variable>
    <variable            name="onClickButtion"            type="mvvm.mvvmsample.commands.UserLogin">
    </variable>

</data>

<LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical"        android:gravity="center"        android:layout_margin="5dp"        android:padding="5dp"        tools:context=".MainActivity_">

    <EditText            android:id="@+id/email"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:gravity="center"            android:text="@={Login.username}"            android:hint="@{Login.usernamehint}"
           />
    <EditText            android:id="@+id/pass"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:gravity="center"            android:text="@={Login.password}"            android:hint="@{Login.passwordhint}"
    />
    <Button            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:background="@color/colorAccent"            android:text="Login"            android:onClick="@{(v)-> onClickButtion.onClickLogin()}"    />

</LinearLayout>




Saturday, 2 February 2019

Retrofit Call In Android:Step by Step Implementation

Retrofit Call In Android:

url: https://jsonplaceholder.typicode.com/posts


1.manifest
<uses-permission android:name="android.permission.INTERNET"/>

2.gradle

dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.5.0'implementation 'com.squareup.retrofit2:converter-gson:2.5.0'}

3.model

public class Post {

    private int userId;
    private int id;
    private String title;
    @SerializedName("body")
    private String textBody;

    public int getUserId() {
        return userId;
    }

    public int getId() {
        return id;
    }

    public String getTitle() {
        return title;
    }

    public String getTextBody() {
        return textBody;
    }
}

4.interface for 
import java.util.List;

import retrofit2.Call;
import retrofit2.http.GET;

public interface JsonPlaceHolderApi {
    @GET("posts")
Call<List<Post>> getPosts();
}

5. mServiceCall()---onCreate()
textview = (TextView) findViewById(R.id.text_result);

private void mServiceCall() {

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("https://jsonplaceholder.typicode.com/")
            .addConverterFactory(GsonConverterFactory.create()).build();

    JsonPlaceHolderApi jsonPlaceHolderApi= retrofit.create(JsonPlaceHolderApi.class);
    Call<List<Post>> call=jsonPlaceHolderApi.getPosts();
    call.enqueue(new Callback<List<Post>>() {
        @Override        public void onResponse(Call<List<Post>> call, Response<List<Post>> response) {
            if(!response.isSuccessful()){
                textview.setText("code:"+response.code());
            }
            List<Post> posts=response.body();
            for(Post post:posts){
                String content ="";
                content+="ID:"+post.getId()+"\n";
                content+="Text Body:"+post.getTextBody();
                textview.append(content);


            }
        }

        @Override        public void onFailure(Call<List<Post>> call, Throwable t) {

        }
    });
}