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)
}
}
}
Ravi Vaghela
Monday, 21 January 2019
MainActivity Kotlin
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); }
Subscribe to:
Posts (Atom)