Intereting Posts
Единичное тестирование сопрограммы Kotlin с задержкой Kotlin – Operator '==' не может применяться к «Редактируемому!». и 'String' при сравнении строки Алгоритм для рекомендаций по выравниванию / привязки, найденных в GUI-сборщиках Android Kotlin – адаптер ListView из списка объектов Наследование метода Init Блокировка serialVersionUID в Котлине Kotlin: Что делают унарные плюсы / минусы для чисел? Android Studio ярлык для автозаполнения Toast (Kotlin) Фильтровать подстроку в котлин Как найти каталог документов пользователя с помощью Kotlin? Неразрешенная ссылка: LinearLayoutManager / RecyclerView Все еще получение исключения IllegalStateException при использовании API People от Google, несмотря на подписку на другой поток с использованием RxJava Как запомнить состояние с помощью операторов повтора в RxJava2 Android Kotlin Защищенное свойство предоставляет свой закрытый тип ExpiresLayout Контрактное тестирование DSL неправильное поведение / ошибка

viewGroup return null на адаптере Recyclerview

Я пытаюсь добавить список с Recyclerview в свой фрагмент. но я получаю ошибку в моем адаптере, когда адаптер пытается раздуть макет. и я считаю, что viewGroup имеет значение null. У меня есть успешный последний раз, но я использую Recyclerview в активности, а не в фрагменте. Я не знаю, где моя ошибка. здесь мое сообщение об ошибке.

android.view.InflateException: Binary XML file line #0: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference at android.view.LayoutInflater.inflate(LayoutInflater.java:543) at android.view.LayoutInflater.inflate(LayoutInflater.java:427) at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:116) at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:88) at com.unicorn.muf.mockup.feature.tracking.adapter.TrackingAdapter.onCreateViewHolder(TrackingAdapter.kt:21) at com.unicorn.muf.mockup.feature.tracking.adapter.TrackingAdapter.onCreateViewHolder(TrackingAdapter.kt:15) at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6493) at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5680) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5563) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5559) at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2229) at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1556) at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1516) at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:608) at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3693) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3410) at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3962) at android.view.View.layout(View.java:16952) 

и здесь мой фрагмент

 class TrackingFragment : Fragment(), TrackingAdapter.onItemClick { private val TAG = "TrackingFragment" private lateinit var binding : FragmentTrackingBinding private var list = ArrayList<TrackingModel>() private var adapter : TrackingAdapter? = null override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { binding = DataBindingUtil.inflate(inflater,R.layout.fragment_tracking,container,false) binding.vRecyclerview.layoutManager = LinearLayoutManager(context) binding.vRecyclerview.itemAnimator = DefaultItemAnimator() adapter = TrackingAdapter(list,context) adapter!!.setOnClick(this) binding.vRecyclerview.adapter = adapter initdummydata() return binding.root } override fun onClickItem(model: TrackingModel) { val gson = Gson() val intent = Intent(context,DetailTrackingActivity::class.java) intent.putExtra(Constants.KEY_GSON, gson.toJson(model)) startActivity(intent) } private fun initdummydata(){ Log.d(TAG, "initData") list.add(TrackingModel("WO",5000000,"Karyawan","Parji", "xxxxxasdax", "BA 1234 BA", "Truck", "Asus", "Jakarta", "A4X", "1234", "12334")) list.add(TrackingModel("WO",40000,"Karyawan","Parjo", "xxxxxasdax", "BA 1234 BA", "Truck", "Asus", "Jakarta", "A4X", "1234", "12334")) list.add(TrackingModel("WO",5000000,"Karyawan","Parje", "xxxxxasdax", "BA 1234 BA", "Truck", "Asus", "Jakarta", "A4X", "1234", "12334")) list.add(TrackingModel("WO",1230000,"Karyawan","Parjer", "xxxxxasdax", "BA 1234 BA", "Truck", "Asus", "Jakarta", "A4X", "1234", "12334")) list.add(TrackingModel("WO",900000,"Karyawan","Parjip", "xxxxxasdax", "BA 1234 BA", "Truck", "Asus", "Jakarta", "A4X", "1234", "12334")) list.add(TrackingModel("WO",1000000000,"Karyawan","Parjan", "xxxxxasdax", "BA 1234 BA", "Truck", "Asus", "Jakarta", "A4X", "1234", "12334")) list.add(TrackingModel("WO",5000000,"Karyawan","Parjak", "xxxxxasdax", "BA 1234 BA", "Truck", "Asus", "Jakarta", "A4X", "1234", "12334")) adapter!!.notifyDataSetChanged() } companion object { fun newInstance(): TrackingFragment = TrackingFragment() } 

здесь мой адаптер.

 class TrackingAdapter(var list: MutableList<TrackingModel>, var context: Context) : RecyclerView.Adapter<TrackingAdapter.viewHolder>() { private var onclick : onItemClick? = null override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): viewHolder { val binding : ItemTrackingDataBinding = DataBindingUtil.inflate( LayoutInflater.from(context),R.layout.item_tracking_data,parent,false) return viewHolder(binding) } override fun onBindViewHolder(holder: viewHolder?, position: Int) { val model = list[position] holder!!.bind(model) } override fun getItemCount(): Int = list.size inner class viewHolder(private var binding: ItemTrackingDataBinding) : RecyclerView.ViewHolder(binding.root){ init { binding.vLayoutTracking.setOnClickListener({ val position = adapterPosition onclick!!.onClickItem(list[position]) }) } fun bind(model: TrackingModel){ binding.vName.text = model.nama binding.vNoapp.text = model.no_kontrak binding.vNomsn.text = model.no_mesin binding.vNopol.text = model.no_polisi binding.vStatus.text = model.status binding.executePendingBindings() } } fun setOnClick (onItemClick: onItemClick){ this.onclick = onItemClick } interface onItemClick{ fun onClickItem(model: TrackingModel) } 

Здесь я получаю ошибку в onCreateviewHolder.

 override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): viewHolder { val binding : ItemTrackingDataBinding = DataBindingUtil.inflate( LayoutInflater.from(context),R.layout.item_tracking_data,parent,false) return viewHolder(binding) } 

У меня отслеживание родительского элемента равно null. или есть какая-то моя ошибка. будет очень признателен, если кто-нибудь мне поможет.

    попробуйте заменить метод onCreateViewHolder () следующим образом:

    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): viewHolder = viewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_tracking_data,parent,false))

    Попробуйте следующее:

     override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): viewHolder { val binding : ItemTrackingDataBinding = DataBindingUtil.inflate( LayoutInflater.from(parent.getContext()),R.layout.item_tracking_data,parent,false) return viewHolder(binding) } 

    и дайте мне знать, если это поможет.

    Это очень смешно, я трачу почти весь день на то, чтобы решить эту проблему. Моя ошибка в моем обычном xml, я использую представление вот так.

     <view android:background="@color/colorGray" android:layout_width="match_parent" android:layout_height="1dp"/> 

    ничего ошибочного, кроме его ложного взгляда .. правильный

     <View android:background="@color/colorGray" android:layout_width="match_parent" android:layout_height="1dp"/> 

    надеюсь, это поможет кому-то.