0

I am facing issue in get response in kotlin. My json response is:

{
   "message":"Success",
   "status":false,
   "data":[
      {
         "id":"1",
         "username":"doctor",
         "phone":null,
         "speciality":"General Physician",
         "name":"Doctor",
         "firstname":null,
         "lastname":null,
         "gender":"",
         "age":null,
         "dobirth":null,
         "email":"[email protected]",
         "country":"Pakistan",
         "state":"Punjab",
         "city":"Lahore",
         "address":null,
         "affiliation":"",
         "degree":"MBBS",
         "bio":null,
         "password":"$2y$10$KF1zBxe07nPBW.0hFWiFfOjIur4cYYfP.LlQlujjcHq4WmQMLGWLK",
         "remember_token":"UlekRgPJqWPx9AczdW2D7cyjiWkyU4mDpGYkR2QYovjsDCaVTt7adnQmSJQo",
         "image":"1496739459-ariba.jpg",
         "license_owner":"0",
         "status":"0",
         "switch_role":"1",
         "invitation_code":"",
         "created_at":"2018-10-01 07:55:47",
         "updated_at":"2018-01-26 00:02:50",
         "license_purchase_id":"0",
         "profile_active":"0",
         "pmdc":"",
         "flag":"1"
      },
      {
         "id":"2",
         "username":"khawarshah",
         "phone":null,
         "speciality":"",
         "name":"Syed Khawar",
         "firstname":null,
         "lastname":null,
         "gender":"",
         "age":null,
         "dobirth":null,
         "email":"[email protected]",
         "country":"",
         "state":"",
         "city":"",
         "address":null,
         "affiliation":"",
         "degree":"",
         "bio":null,
         "password":"$2y$10$3nG\/43tUdA2QKzinBPvA4.zqQHfxmR8sZ0LICQ3xg6LLr6mFYZq7q",
         "remember_token":"teuzY7HKubHdQg9TXA3zgDJmszrNPm2vBg1226JmDPhk0APZuEafIUpNGKJ4",
         "image":"",
         "license_owner":"0",
         "status":"1",
         "switch_role":"1",
         "invitation_code":"",
         "created_at":"2019-04-19 07:08:10",
         "updated_at":"2019-04-19 11:08:10",
         "license_purchase_id":"0",
         "profile_active":"0",
         "pmdc":"",
         "flag":"1"
      }
  ]
}

ApiClient class and ApiFactory isenter image description here

enter image description here

data class Users (

    @Expose
    @SerializedName("message")
    val message: String,
    @Expose
    @SerializedName("status")
    val status: String,
    @Expose
    @SerializedName("id")
    val id: String,
    @Expose
    @SerializedName("username")
    val username: String,
    @Expose
    @SerializedName("speciality")
    val speciality: String,
    @Expose
    @SerializedName("firstname")
    val firstname: String,
    @Expose
    @SerializedName("name")
    val name: String,
    @Expose
    @SerializedName("lastname")
    val lastname: String,
    @Expose
    @SerializedName("gender")
    val gender: String,
    @Expose
    @SerializedName("age")
    val age: String,
    @Expose
    @SerializedName("dobirth")
    val dobirth: String,
    @Expose
    @SerializedName("email")
    val email: String,
    @Expose
    @SerializedName("image")
    val image: String,
    @Expose
    @SerializedName("switch_role")
    val switch_role: String

)

And Main fragment is

class HomeFragment : Fragment() {

    private lateinit var homeViewModel: HomeViewModel

    lateinit var progerssProgressDialog: ProgressDialog
    var dataList = ArrayList<Users>()
    lateinit var recyclerView: RecyclerView
    lateinit var adapter:ListAdapter


    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        homeViewModel =
            ViewModelProviders.of(this).get(HomeViewModel::class.java)
        val root = inflater.inflate(R.layout.fragment_home, container, false)
        val RecyclerView: RecyclerView = root.findViewById(R.id.recyclerView)
        recyclerView = root.findViewById(R.id.recyclerView)
        recyclerView.adapter= ListAdapter(dataList,requireContext())
        recyclerView.layoutManager=LinearLayoutManager(requireContext(),LinearLayoutManager.VERTICAL,false)

        progerssProgressDialog=ProgressDialog(requireContext())
        progerssProgressDialog.setTitle("Loading")
        progerssProgressDialog.setCancelable(false)
        progerssProgressDialog.show()
        getData()

        return root
    }


    private fun getData() {
        val call: Call<List<Users>> = ApiClient.getClient.getPhotos()
        call.enqueue(object : Callback<List<Users>> {

            override fun onResponse(call: Call<List<Users>>?, response: Response<List<Users>>?) {
                progerssProgressDialog.dismiss()
                dataList.addAll(response!!.body()!!)

                recyclerView.adapter?.notifyDataSetChanged()
            }

            override fun onFailure(call: Call<List<Users>>, t: Throwable) {
                progerssProgressDialog.dismiss()
            }
        })
    }
}

but did not get response in recyclerview. what is the mistake?

3 Answers 3

1

Your data classes and JSON structure don't match.

Use JsonToKotlinClass plugin to create data class from json in Android Studio

Sign up to request clarification or add additional context in comments.

1 Comment

Super Helpful, Thanks. Kinda new to the whole classes types
1

Problem is with your data class "Users".. Check below data class for your reference:

data class Response(

@field:SerializedName("data")
val data: List<DataItem?>? = null,

@field:SerializedName("message")
val message: String? = null,

@field:SerializedName("status")
val status: Boolean? = null)

data class DataItem(

@field:SerializedName("country")
val country: String? = null,

@field:SerializedName("firstname")
val firstname: Any? = null,

@field:SerializedName("invitation_code")
val invitationCode: String? = null,

@field:SerializedName("flag")
val flag: String? = null,

@field:SerializedName("gender")
val gender: String? = null,

@field:SerializedName("city")
val city: String? = null,

@field:SerializedName("pmdc")
val pmdc: String? = null,

@field:SerializedName("bio")
val bio: Any? = null,

@field:SerializedName("created_at")
val createdAt: String? = null,

@field:SerializedName("switch_role")
val switchRole: String? = null,

@field:SerializedName("speciality")
val speciality: String? = null,

@field:SerializedName("password")
val password: String? = null,

@field:SerializedName("updated_at")
val updatedAt: String? = null,

@field:SerializedName("affiliation")
val affiliation: String? = null,

@field:SerializedName("license_owner")
val licenseOwner: String? = null,

@field:SerializedName("id")
val id: String? = null,

@field:SerializedName("state")
val state: String? = null,

@field:SerializedName("remember_token")
val rememberToken: String? = null,

@field:SerializedName("email")
val email: String? = null,

@field:SerializedName("image")
val image: String? = null,

@field:SerializedName("license_purchase_id")
val licensePurchaseId: String? = null,

@field:SerializedName("address")
val address: Any? = null,

@field:SerializedName("profile_active")
val profileActive: String? = null,

@field:SerializedName("degree")
val degree: String? = null,

@field:SerializedName("lastname")
val lastname: Any? = null,

@field:SerializedName("phone")
val phone: Any? = null,

@field:SerializedName("name")
val name: String? = null,

@field:SerializedName("dobirth")
val dobirth: Any? = null,

@field:SerializedName("age")
val age: Any? = null,

@field:SerializedName("username")
val username: String? = null,

@field:SerializedName("status")
val status: String? = null

)

3 Comments

And which Model class i use Response or DataItem in Main class?
just replace your users class with above code i have edited
Also you can install RoboPOJOGenerate from File->Settings->Plugins->Search RoboPOJOGenerate and install.. After successfull installation, right click on your package->New->Generate POJO from Json(at bottom).. Just copy paste ur json response and generate the class
0

Your Users class does not match the structure of your json, so you won't be able to parse it. Looking at your json, it's more like:

data class ResponseMessage(
    val message: String,
    val status: Boolean,
    val data: List<User>
)

data class User(
    val id: Long,
    val username: String,
    ...
)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.