В моем приложении у меня есть «Продукт» Cars
, здесь я пытаюсь отобразить данные из API. API имеет несколько продуктов, но мой код показывает только 1 продукт и не превращает мои данные выборки в список!
Вот мой код данных выборки GET
:
fun carsList(context: Context, complete: (Boolean) -> Unit) {
val carList = object : JsonObjectRequest(Method.GET, URL_CAR_LIST, null, Response.Listener { response ->
try {
val list: List<CarsListData> = ArrayList()
val listCar = response.getJSONArray("listCar")
for (i in 0 until listCar.length()) {
val carData= listCar.getJSONObject(i)
CarsListData.title = carData.getString("adTitle")
CarsListData.date = carData.getString("adDate")
CarsListData.price = carData.getDouble("adPrice")
CarsListData.category = carData.getString("category")
CarsListData.brand = carData.getString("brand")
CarsListData.model = carData.getString("brandModel")
CarsListData.distance = carData.getDouble("kilometer")
CarsListData.year = carData.getString("modelYear")
CarsListData.fuel = carData.getString("fuelType")
CarsListData.gear = carData.getString("gearType")
}
list
complete(true)
} catch (e: JSONException) {
Log.d("JSON", "EXC" + e.localizedMessage)
}
}, Response.ErrorListener {error ->
Log.d("ERROR", "Could not login user: $error")
complete(false)
}) {
override fun getBodyContentType(): String {
return "application/json; charset=utf-8"
}
}
Volley.newRequestQueue(context).add(carList)
}
Вот мой Adapter
classs, где я четко называю "count", чтобы он мог прочитать более 1 продукта:
class CarAdapter(context: Context, cars: List<CarsListData>) : BaseAdapter() {
val context = context
val cars = cars
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val carsView: View
carsView = LayoutInflater.from(context).inflate(R.layout.cars_list, null)
val car = cars[position]
val carImage: ImageView = carsView.findViewById(R.id.carDetailsImage)
val carTitle: TextView = carsView.findViewById(R.id.carDetailsTitle)
val carCategory: TextView = carsView.findViewById(R.id.carDetailsCategory)
val carPrice: TextView = carsView.findViewById(R.id.carDetailsPrice)
val carDistance: TextView = carsView.findViewById(R.id.carDetailsDistance)
val carDate: TextView = carsView.findViewById(R.id.carDetailsDate)
val carGear: TextView = carsView.findViewById(R.id.cardetailsGear)
val carYear: TextView = carsView.findViewById(R.id.carDetailsYear)
val carOil: TextView = carsView.findViewById(R.id.carDetailsOil)
AuthService.carsList(context){success ->
if (success) {
carTitle.text = car.title
carCategory.text = car.category
carPrice.text = car.price.toString()
carDistance.text = car.distance.toString()
carDate.text = car.date
carGear.text = car.gear
carYear.text = car.year
carOil.text = car.fuel
}
}
// val resourceId = context.resources.getIdentifier(car.image, "drawable", context.packageName)
// carImage.setImageResource(resourceId)
return carsView
}
override fun getItem(position: Int): Any {
return cars[position]
}
override fun getItemId(position: Int): Long {
return 0
}
override fun getCount(): Int {
return cars.count()
}
}
А вот страница Activity, где я звоню Adapter
:
class CarListActivity : AppCompatActivity() {
lateinit var adapter : CarAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_car_list)
adapter = CarAdapter(this, listOf(CarsListData))
CarsListPageItems.adapter = adapter // categoryListView will be not null here
carDetailsDate.length()
}
}
Как мне сделать так, чтобы показывалось более 1 продукта? на данный момент он получает данные в порядке, но получает только данные о последнем последнем продукте {}