Monday, 21 January 2019

MainActivity Kotlin

import com.google.gson.GsonBuilder
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.internal.schedulers.IoScheduler
import kotlinx.android.synthetic.main.activity_main.*
import retrofit2.Retrofit
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
import retrofit2.converter.gson.GsonConverterFactory

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        rv__list_posts.layoutManager = LinearLayoutManager(this)

        val retrofit = Retrofit.Builder().addConverterFactory(GsonConverterFactory.create(GsonBuilder().create()))
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .baseUrl("https://jsonplaceholder.typicode.com/").build()

        val postsApi = retrofit.create(INetworkAPI::class.java)

        var response = postsApi.getAllPosts()

        response.observeOn(AndroidSchedulers.mainThread()).subscribeOn(IoScheduler()).subscribe {
            rv__list_posts.adapter = PostItemAdapter(it, this)
        }

    }
}

API Interface

import io.reactivex.Observable
import retrofit2.http.GET

interface INetworkAPI {

    @GET("posts/")
    fun getAllPosts(): Observable<List<Post>>
}

Model class Kotlin

I used a plugin in Android studio JSON to Kotlin Data class Converter.
Which automatically converted above JSON List to the below Kotlin Data Class Post.

import com.google.gson.annotations.SerializedName


data class Post(
      @SerializedName("userId") val userId: Int,
      @SerializedName("id") val id: Int,
      @SerializedName("title") val title: String,
      @SerializedName("body") val body: String
)

Kotlin Adapter

class PostItemAdapter(val postList: List<Post>, val context: Context) : 
      RecyclerView.Adapter<PostItemAdapter.ViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {

        return ViewHolder(LayoutInflater.from(context).inflate(R.layout.post_item_layout,
                          parent, false))
    }

    override fun getItemCount(): Int {
        return 10
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {

        holder.itemView.txtPostTitle.text = postList.get(position).title
        holder.itemView.txtPostBody.text = postList.get(position).body

    }
    class ViewHolder(view: View) : RecyclerView.ViewHolder(view)
}

Friday, 16 November 2018

Set ProgressDialog

public static void setProgressDialog(final Activity activity, boolean show) {
    try {

        if (activity == null) {
            return;
        }

        builder = new MaterialDialog.Builder(activity);

        LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View dialogView = inflater.inflate(R.layout.item_progress_dialog, null);

        avLoadingIndicatorView = (AVLoadingIndicatorView) dialogView.findViewById(R.id.avDialog);

        builder.customView(dialogView, false);

        if (dialogMaterial != null) {
            if (dialogMaterial.isShowing()) {
                dialogMaterial.dismiss();
                avLoadingIndicatorView.hide();

            }
            dialogMaterial = null;
        } else {
            dialogMaterial = null;

        }

        dialogMaterial = builder.build();

        dialogMaterial.setCancelable(false);

        dialogMaterial.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

        dialogMaterial.getWindow().setDimAmount(0.0f);

        dialogMaterial.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

        if (show) {

            dialogMaterial.dismiss();
            dialogMaterial.show();
            avLoadingIndicatorView.show();

        } else {

            dialogMaterial.dismiss();
            avLoadingIndicatorView.hide();

        }
    } catch (Exception e) {
        e.printStackTrace();

    }
}

Thursday, 24 May 2018

App Permission

public class AppPermissions {
    private Activity mActivity;


    @Deprecated    public AppPermissions() {
    }

    public AppPermissions(Activity activity) {
        mActivity = activity;
    }

    public boolean hasPermission(String permission) {
        return ActivityCompat.checkSelfPermission(mActivity, permission)
                == PackageManager.PERMISSION_GRANTED;
    }

    public boolean hasPermission(String[] permissionsList) {
        for (String permission : permissionsList) {
            if (ActivityCompat.checkSelfPermission(mActivity, permission)
                    != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
        return true;
    }

    public void requestPermission(String permission, int requestCode) {
        if (ActivityCompat.checkSelfPermission(mActivity, permission)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(mActivity, new String[] { permission }, requestCode);
        }
    }

    public void requestPermission(String[] permissionsList, int requestCode) {
        List<String> permissionNeeded = new ArrayList<>();
        for (String permission : permissionsList) {
            if (ActivityCompat.checkSelfPermission(mActivity, permission)
                    != PackageManager.PERMISSION_GRANTED) {
                permissionNeeded.add(permission);
            }
        }
        if (permissionNeeded.size() > 0) {
            ActivityCompat.requestPermissions(mActivity,
                    permissionNeeded.toArray(new String[permissionNeeded.size()]), requestCode);
        }
    }

    @Deprecated    public boolean hasPermission(Activity activity, String permission) {
        return ActivityCompat.checkSelfPermission(activity, permission)
                == PackageManager.PERMISSION_GRANTED;
    }

    @Deprecated    public boolean hasPermission(Activity activity, String[] permissionsList) {
        for (String permission : permissionsList) {
            if (ActivityCompat.checkSelfPermission(activity, permission)
                    != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
        return true;
    }

    @Deprecated    public void requestPermission(Activity activity, String permission, int requestCode) {
        if (ActivityCompat.checkSelfPermission(activity, permission)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(activity, new String[] { permission }, requestCode);
        }
    }

    @Deprecated    public void requestPermission(Activity activity, String[] permissionsList, int requestCode) {
        List<String> permissionNeeded = new ArrayList<>();
        for (String permission : permissionsList) {
            if (ActivityCompat.checkSelfPermission(activity, permission)
                    != PackageManager.PERMISSION_GRANTED) {
                permissionNeeded.add(permission);
            }
        }
        if (permissionNeeded.size() > 0) {
            ActivityCompat.requestPermissions(activity,
                    permissionNeeded.toArray(new String[permissionNeeded.size()]), requestCode);
        }
    }
}

Wednesday, 23 May 2018

File upload

public static interface API_Update_Profile_Data {
    @Multipart    @POST("updateprofile_api/update_profiledata/")
    Call<ResponseBody> Respos(@Part("user_id") RequestBody user_id,
                              @Part("user_type") RequestBody user_type,
                              @Part("name_ara") RequestBody name_ara,
                              @Part("name_eng") RequestBody name_eng,
                              @Part MultipartBody.Part user_image,
                              @Part("mobileno") RequestBody mobileno,
                              @Part("email_id") RequestBody email_id);

private void updateUserData(RequestBody mUserId, RequestBody mUserType, RequestBody name_ara, final RequestBody name_eng,
                            RequestBody mobileno, RequestBody email) {
    ShowProgressDialog();
    File file = null;

    RequestBody fbody = null;
    String file_name = null;

    MultipartBody.Part body = null;
    try {
        file = new File(imageUri.getPath());
        file_name = file.getName();
        file_name = file_name.replace(" ", "");
        fbody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
        body = MultipartBody.Part.createFormData("user_image", file_name, fbody);
    } catch (Exception e) {
        e.printStackTrace();
    }

    GetResponce.API_Update_Profile_Data service = Final_API_Data.retrofit.create(GetResponce.API_Update_Profile_Data.class);

    Call<ResponseBody> result = service.Respos(mUserId, mUserType, name_ara, name_eng, body, mobileno, email);

    final File finalFile = file;
    final String finalFile_name = file_name;
    result.enqueue(new Callback<ResponseBody>() {
        @Override        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            Log.e("Sucessfully", "Done");
            try {
                String res = response.body().string();
                String status = "0";
                Log.e("Updat Profile Respo", res);
                JSONObject jsonObject = new JSONObject(res);
                status = jsonObject.getString("status");
                String message = jsonObject.getString("message");
                if (status.equals("1")) {

                    ((MainActivity) getActivity()).popFragments();

                    MainActivity.tvUserName.setText(etNameEng.getText().toString());

                    user_image_url = CONSTANT.Customer_Image_Path + finalFile_name;
                    Log.e("User Image", user_image_url);
                    UserData.mUserImage = finalFile_name;

                    try {
                        Glide.with(getActivity()).load(user_image_url).diskCacheStrategy(DiskCacheStrategy.SOURCE).dontAnimate().placeholder(R.drawable.place_add_user_image).into(ivProfilePic);
                        txtAddProfilePhoto.setVisibility(View.GONE);
                        Glide.with(getActivity()).load(user_image_url).diskCacheStrategy(DiskCacheStrategy.SOURCE).dontAnimate().placeholder(R.drawable.icn_car).into(MainActivity.ivUserImageHead);
                    } catch (Exception e) {

                    }

                    Toast.makeText(activity, getString(R.string.your_profile_has_been_saved_successfully), Toast.LENGTH_SHORT).show();
                }
                else if(status.equals("0")){
                    Toast.makeText(activity, "Email Id already registered, Please try another Id", Toast.LENGTH_LONG).show();
                }
                else {
                    Toast.makeText(activity, getString(R.string.failed_please_try_again), Toast.LENGTH_SHORT).show();
                    DismissProgressDialog();
                    return;
                }

                DismissProgressDialog();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        @Override        public void onFailure(Call<ResponseBody> call, Throwable t) {
            Log.e("Sucess Fully", t.getMessage());
            DismissProgressDialog();
        }
    });
}

private RequestBody StringToRequestBody(String s) {
    return RequestBody.create(MediaType.parse("multipart/form-data"), s);
}