Невозможно отобразить данные из моего представления макетаBindingAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Невозможно отобразить данные из моего представления макетаBinding

Сообщение Anonymous »

Я новичок в Android Studio. Я следил за руководством по созданию приложения MVVM на базе Kotlin с помощью Firebase. Я создал класс данных ServiceOrder, который содержит все необходимые поля данных для моего приложения.
Я хочу перечислить все объекты ServiceOrder в RecyclerView. Я создал SOListingFragment, связанный с адаптером (SOListingAdapter). Класс адаптера управляет данными и привязывает их к RecyclerView.
При запуске приложения мне удалось добавить данные в Firebase, но в макете списка не отображались никакие данные из База данных Firestore
Вот то, что я ожидал: ожидаемый макет.
Это результат во время выполнения: макет результата здесь
Может кто-нибудь помочь мне определить, в чем проблема? Я застрял на этом уже несколько недель.

Код: Выделить всё

data class ServiceOrder(

val id: String="",
val SO_numb: String="",
val SO_title: String="",
val SO_type: String="",
val SO_description: String="",
@ServerTimestamp
val date: Date= Date(),)

@AndroidEntryPoint class SOListingFragment : Fragment() {
val TAG: String = "SOListingFragment"
lateinit var binding: FragmentSOListingBinding
val viewModel: ServiceOrderViewModel by viewModels()
val adapter by lazy {
SOListingAdapter(
onItemClicked = { pos, item -> } ,
onEditClicked =  { pos, item -> } ,
onDeleteClicked = {pos, item ->},

)

}

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
// Inflate the layout for this fragment
//return inflater.inflate(R.layout.fragment_s_o_listing, container, false)
binding = FragmentSOListingBinding.inflate(layoutInflater)
return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.recyclerView.adapter = adapter
binding.button.setOnClickListener{
findNavController().navigate(R.id.action_SOListingFragment_to_SODetailFragment)
}
viewModel.getServiceOrders()
viewModel.serviceOrder.observe(viewLifecycleOwner){ state ->

when(state){

is UiState.Loading -> {
binding.progressBar.show()

}

is UiState.Failure -> {
binding.progressBar.hide()
toast(state.error)

}

is UiState.Success->{
binding.progressBar.hide()
adapter.updateList(state.data.toMutableList())

}
}
}

}

class SOListingAdapter (
val  onItemClicked:
(Int, ServiceOrder)-> Unit,
val  onEditClicked: (Int, ServiceOrder)-> Unit,
val onDeleteClicked: (Int, ServiceOrder)-> Unit,

): RecyclerView.Adapter(){private var list: MutableList = arrayListOf()

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val itemView = ItemSoLayoutBinding.inflate(LayoutInflater.from(parent.context),parent,false)
return MyViewHolder(itemView)
}

fun updateList(list: MutableList){
this.list = list
notifyDataSetChanged()
}

override fun getItemCount(): Int {
return list.size
}

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val item = list[position]
Log.d("SOListingAdapter", "Binding item at position $position: $item")
holder.bind(item)
}

inner class MyViewHolder(val binding: ItemSoLayoutBinding): RecyclerView.ViewHolder(binding.root) { fun bind(item: ServiceOrder){       binding.SoNumber.setText(item.SO_numb)
binding.SoType.setText(item.SO_type)
binding.SoDescription.setText(item.SO_description)
binding.SoLayout.setOnClickListener{ onEditClicked.invoke(adapterPosition,item)}
binding.itemLayout.setOnClickListener{onItemClicked.invoke(adapterPosition,item)}
}

}

}
Я реализовал SOListingFragment в приложении Android, используя Kotlin и Hilt для внедрения зависимостей. Фрагмент был разработан для отображения списка заказов на обслуживание с помощью RecyclerView с пользовательским адаптером (SOListingAdapter).When запустив приложение, я не смог просмотреть данные в меню листинга

Подробнее здесь: https://stackoverflow.com/questions/786 ... iewbinding
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»