Адаптер не подключен; ошибка пропуска макета в окне logcat в android studio - PullRequest
0 голосов
/ 11 июля 2020

Я столкнулся с этой проблемой в течение 3-4 дней, и я все еще не могу исправить эту ошибку. Я также прошел через это решение той же проблемы

, но я не понял достаточно. Я понял, что эта ошибка возникает, когда мы не подключили наш адаптер, но я подключил. ниже я прикрепил свой файл фрагмента, файл адаптера и файл RecyclerView -

это код, в котором я объявил свой адаптер

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.example.chumonsuru.R
import com.example.chumonsuru.model.Resturant
import com.squareup.picasso.Picasso
class DashboardRecyclerAdapter(val context : Context , val resturantInfoList : ArrayList<Resturant>) : RecyclerView.Adapter<DashboardRecyclerAdapter.DashboardViewHolder>(){
   class DashboardViewHolder(view:View): RecyclerView.ViewHolder(view){
       val txtResturantid : TextView = view.findViewById(R.id.txtResturantid)
       val txtResturantName : TextView = view.findViewById(R.id.txtResturantName)
       val txtPerPrice : TextView = view.findViewById(R.id.txtPerPrice)
       val txtResturantRating : TextView = view.findViewById(R.id.txtResturantRating)
       val imgResturantImage : ImageView = view.findViewById(R.id.imgResturantImage)
   }
   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DashboardViewHolder {
       val view = LayoutInflater.from(parent.context).inflate(R.layout.recycler_dashboard_row_one , parent , false)
       return DashboardViewHolder(view)
   }
   override fun getItemCount(): Int {
       return resturantInfoList.count()
   }
   override fun onBindViewHolder(holder: DashboardViewHolder, position: Int) {

       val resturant = resturantInfoList[position]
       holder.txtResturantid.text = resturant.id
       holder.txtResturantName.text = resturant.name
       holder.txtPerPrice.text = resturant.cost_for_one
       holder.txtResturantRating.text = resturant.rating
       Picasso.get().load(resturant.image_url).into(holder.imgResturantImage)

   }
} 

, а вот мой файл фрагмента панели -


import android.content.Context
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.android.volley.Request
import com.android.volley.Response
import com.android.volley.toolbox.JsonObjectRequest
import com.android.volley.toolbox.Volley
import com.example.chumonsuru.R
import com.example.chumonsuru.adapter.DashboardRecyclerAdapter
import com.example.chumonsuru.model.Resturant
import kotlin.collections.HashMap


class DashFrag : Fragment() {
   lateinit var recyclerView: RecyclerView
   lateinit var linearLayoutManager: LinearLayoutManager
   lateinit var recyclerAdapter: DashboardRecyclerAdapter

   val resturantInfoList = arrayListOf<Resturant>()

   override fun onCreateView(

           inflater: LayoutInflater, container: ViewGroup?,
           savedInstanceState: Bundle?
   ): View? {
       // Inflate the layout for this fragment
       val view = inflater.inflate(R.layout.dash_frag, container, false)

       linearLayoutManager = LinearLayoutManager(activity)
       recyclerView = view.findViewById(R.id.recyclerView)
       val queue = Volley.newRequestQueue(activity as Context)

       val url = "http://13.235.250.119/v1/book/fetch_books/"
       val jsonObjectRequest = object : JsonObjectRequest(Request.Method.GET, url, null, Response.Listener {

           val success = it.getBoolean("success")

           if (success != null) {
               val data = it.getJSONArray("data")
               for (i in 0 until data.length()) {
                   val resturantJsonObject = data.getJSONObject(i)
                   val resturantObject = Resturant(

                           resturantJsonObject.getString("id"),
                           resturantJsonObject.getString("name"),
                           resturantJsonObject.getString("rating"),
                           resturantJsonObject.getString("cost_for_one"),
                           resturantJsonObject.getString("image_url")
                   )
                   resturantInfoList.add(resturantObject)
                   recyclerAdapter = DashboardRecyclerAdapter(activity as Context, resturantInfoList)
                   recyclerView.adapter = recyclerAdapter
                   recyclerView.layoutManager = linearLayoutManager
                   recyclerView.addItemDecoration(DividerItemDecoration(recyclerView.context,
                           (linearLayoutManager)
                                   .orientation))
               }


           }


       },
               Response.ErrorListener {

                   /////ERROR/////

               }) {

           override fun getHeaders(): MutableMap<String, String> {
               val headers = HashMap<String, String>()
               headers["Content-type"] = "application/json"
               headers["token"] = "xyz"
               return headers
           }
       }

       queue.add(jsonObjectRequest)
       return view
   }
}

и мой класс ресторана-


data class Resturant(
        val id: String,
        val name: String,
        val rating: String,
        val cost_for_one : String,
        val image_url: String
)


фрагмент моей панели инструментов xml файл-

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".fragments.DashFrag">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:id="@+id/txtHelloFrag"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello_blank_fragment"
        android:textSize="50sp"
        android:textColor="@color/colorAccent"
        android:padding="20dp"
        android:background="@drawable/gradient"/>
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtHelloFrag"
        android:layout_margin="10dp"
        android:padding="5dp"
        />

</RelativeLayout>

и макет строки представления ресайклера

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="140dp"
android:orientation="horizontal"
android:background="#ffffff"
android:weightSum="6">



<ImageView
    android:layout_weight="1.5"
    android:id="@+id/imgResturantImage"
    android:layout_width="0dp"
    android:layout_height="110dp"
    android:src="@mipmap/ic_launcher1"
    android:padding="5dp"/>

<RelativeLayout
    android:layout_weight="3.3"
    android:layout_width="0dp"
    android:layout_height="match_parent">
    <TextView
        android:padding="8dp"
        android:id="@+id/txtResturantid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="id"
        android:layout_toLeftOf="@id/txtResturantName"
        android:textSize = "18sp"
        />
    <TextView
        android:id="@+id/txtResturantName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Name of the Resturant"
        android:paddingTop="8dp"
        android:textSize="18sp"
        android:textColor="#000000"/>

    <TextView
        android:id="@+id/txtBookAuthor"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/txtResturantName"
        android:text="Name of the Author"
        android:padding="8dp"
        android:textSize="15sp"/>

    <TextView
        android:id="@+id/txtPerPrice"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Rs. 299"
        android:paddingTop="8dp"
        android:paddingLeft="8dp"
        android:layout_below="@id/txtBookAuthor"
        android:textSize="15sp"
        android:textStyle="bold"
        android:textColor="#357a38"/>
    <TextView
        android:id="@+id/txtPerPerson"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="/person"
        android:layout_toRightOf="@id/txtPerPrice"
        android:textSize="15sp"
        android:layout_below="@id/txtBookAuthor"
        android:textColor="#357a38"
        android:paddingTop="8dp"
        android:textStyle="bold"/>
</RelativeLayout>


<TextView
    android:id="@+id/txtResturantRating"
    android:layout_weight="1.2"
    android:layout_width="0dp"
    android:padding="6dp"
    android:layout_height="wrap_content"
    android:drawableLeft="@drawable/star_foreground"
    android:textColor="#ffca28"
    android:text="4.5"
    android:textSize="15sp"
    android:textStyle="bold">

</TextView>

</LinearLayout>

Кажется, я уже подключил адаптер к моему виду ресайклера. Если я не помог, пожалуйста, помогите мне это сделать. Помогите, пожалуйста, избавиться от этой проблемы

1 Ответ

0 голосов
/ 11 июля 2020

Думаю, что нужно проверить.

 return view

Вместо этого нужно использовать

 return view;

секунду,

<androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtHelloFrag"
        android:layout_margin="10dp"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        android:padding="5dp"
        />

Вы попробуйте поместить в него app:layoutManager.

или

 val layoutManager = LinearLayoutManager(this)
 recyclerView_main.setLayoutManager(layoutManager)

Как указано выше, LayoutManager установлен в setLayoutManager и обрабатывается как код.

 LinearLayoutManager manager = new LinearLayoutManager(this);
 recyclerView.setLayoutManager(manager);

this описано выше, вы установили диспетчер компоновки для RecyclerView

Надеюсь, что он будет работать.

...