Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我面临一个错误;无适配器连接;跳过布局“;_Android_Kotlin_Retrofit2_Android Recyclerview - Fatal编程技术网

Android 我面临一个错误;无适配器连接;跳过布局“;

Android 我面临一个错误;无适配器连接;跳过布局“;,android,kotlin,retrofit2,android-recyclerview,Android,Kotlin,Retrofit2,Android Recyclerview,我是kotlin和改装的新手,当我运行此应用程序时,我的设备中没有显示任何内容。但是我检查了logcat,发现这个错误没有连接适配器;跳过布局。有时在我发布这个问题之前,有些人会回答这个问题,但这个答案不正确 CountryActivity.kt var recyclerView: RecyclerView = findViewById(R.id.countryRecyclerView) recyclerView.layoutManager = LinearLayoutManager(this)

我是kotlin和改装的新手,当我运行此应用程序时,我的设备中没有显示任何内容。但是我检查了logcat,发现这个错误
没有连接适配器;跳过布局
。有时在我发布这个问题之前,有些人会回答这个问题,但这个答案不正确

CountryActivity.kt

var recyclerView: RecyclerView = findViewById(R.id.countryRecyclerView)
recyclerView.layoutManager = LinearLayoutManager(this)

var apiInterface: CountryDataInterface = 
CountryApiClient.getApiClient()!!.create(CountryDataInterface::class.java)
apiInterface.getCountryData().enqueue(object : Callback<List<Country>> {
override fun onFailure(call: Call<List<Country>>, t: Throwable) {}

override fun onResponse(call: Call<List<Country>>, response: Response<List<Country>>) {
val countryData = response.body()!!
recyclerView.adapter = CountryDataAdapter(countryData)
var recyclerView:recyclerView=findViewById(R.id.countryRecyclerView)
recyclerView.layoutManager=LinearLayoutManager(此)
APIvar接口:CountryDataInterface=
CountryApiClient.getApiClient()!!。创建(CountryDataInterface::class.java)
apiInterface.getCountryData().enqueue(对象:回调{
覆盖失败(调用:调用,t:Throwable){}
覆盖fun onResponse(调用:调用,响应:响应){
val countryData=response.body()!!
recyclerView.adapter=CountryDataAdapter(countryData)
CountryDataAdapter.kt

class CountryDataAdapter(var countryDataList: List<Country>?):
RecyclerView.Adapter<CountryDataAdapter.RecyclerViewHolder>() {
class RecyclerViewHolder(itemView: View):RecyclerView.ViewHolder(itemView) {
var countryName: TextView = itemView.findViewById(R.id.countryName)
var casesTotal: TextView = itemView.findViewById(R.id.casesTotal)
var casesToday: TextView = itemView.findViewById(R.id.casesToday)
var deathTotal: TextView = itemView.findViewById(R.id.deathTotal)
var deathToday: TextView = itemView.findViewById(R.id.deathToday)
var recoveredAll: TextView = itemView.findViewById(R.id.recoveredAll)
var activeAll: TextView = itemView.findViewById(R.id.activeAll)
var criticalAll: TextView = itemView.findViewById(R.id.criticalAll)

fun bindData(countryDataList: List<Country>?, position: Int){
    countryName.text = countryDataList!!.get(position).countryName.toString()
    casesTotal.text = countryDataList!!.get(position).cases.toString()
    casesToday.text = countryDataList!!.get(position).todayCases.toString()
    deathTotal.text = countryDataList!!.get(position).deathTotal.toString()
    deathToday.text = countryDataList!!.get(position).deathToday.toString()
    recoveredAll.text = countryDataList!!.get(position).recovered.toString()
    activeAll.text = countryDataList!!.get(position).activePatient.toString()
    criticalAll.text = countryDataList!!.get(position).critical.toString()
  }
 }

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerViewHolder {
var view: View = LayoutInflater.from(parent!!.context).inflate(R.layout.country_row,parent,false)
return RecyclerViewHolder(view)
}

override fun getItemCount(): Int {
return countryDataList!!.size
}
override fun onBindViewHolder(holder: RecyclerViewHolder, position: Int) {
holder.bindData(countryDataList,position)
}
}
classcountrydataadapter(var countryDataList:List?):
RecyclerView.Adapter(){
类RecyclerViewWholder(itemView:View):RecyclerView.ViewHolder(itemView){
var countryName:TextView=itemView.findViewById(R.id.countryName)
var casesTotal:TextView=itemView.findViewById(R.id.casesTotal)
var casesToday:TextView=itemView.findViewById(R.id.casesToday)
var deathTotal:TextView=itemView.findViewById(R.id.deathTotal)
var deathToday:TextView=itemView.findViewById(R.id.deathToday)
var recoveredAll:TextView=itemView.findViewById(R.id.recoveredAll)
var-activeAll:TextView=itemView.findViewById(R.id.activeAll)
var criticalAll:TextView=itemView.findViewById(R.id.criticalAll)
fun bindData(countryDataList:List?,位置:Int){
countryName.text=countryDataList!!.get(position).countryName.toString()
casesTotal.text=countryDataList!!.get(position).cases.toString()
casesToday.text=countryDataList!!.get(position).todayCases.toString()
deathTotal.text=countryDataList!!.get(position).deathTotal.toString()
deathToday.text=countryDataList!!.get(position).deathToday.toString()
recoveredAll.text=countryDataList!!.get(position).recovered.toString()
activeAll.text=countryDataList!!.get(position).activePatient.toString()
criticalAll.text=countryDataList!!.get(position).critical.toString()
}
}
override fun onCreateViewHolder(父级:ViewGroup,viewType:Int):RecycleServiceWholder{
变量视图:view=LayoutInflater.from(parent!!.context)。充气(R.layout.country\u行,parent,false)
返回RecycleServiceWholder(视图)
}
重写getItemCount():Int{
返回countryDataList!!.size
}
覆盖BindViewHolder(holder:RecycleServiceWholder,位置:Int){
holder.bindData(countryDataList,位置)
}
}

我认为您的问题是因为您在异步函数中调用了
recyclerView.adapter=CountryDataAdapter(countryData)

从你的帖子中可以看出

override-fun-onResponse(调用:调用,响应:响应){
val countryData=response.body()!!
recyclerView.adapter=CountryDataAdapter(countryData)
recyclerView.adapter=CountryDataAdapter(countryData)
处于异步的
onResponse
中,当您的活动午餐时,您的适配器未设置,因为它等待网络的结果进行设置

最好将其设置为:

  • 在活动开始时添加
    var countryData:List=ArrayList()
  • 检查回购后编辑:

    您什么也得不到,因为您的呼叫正在进入
    onFailure
    。您应该添加日志以查看此类情况

    国家活动:

    override-fun-onCreate(savedInstanceState:Bundle?){
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity\U国家/地区)
    val recyclerView:recyclerView=findViewById(R.id.cRecyclerView)
    var countryData:List=ArrayList()
    recyclerView.layoutManager=LinearLayoutManager(此)
    recyclerView.setHasFixedSize(真)
    recyclerView.adapter=CountryDataAdapter(countryData)
    //recyclerView.addItemDecoration(DividerItemDecoration(此,DividerItemDecoration.VERTICAL))
    val apiInterface:CountryDataInterface=CountryApiClient.getApiClient()!!.create(CountryDataInterface::class.java)
    apiInterface.getCountryData().enqueue(对象:回调{
    覆盖失效时的乐趣(调用:调用,t:可丢弃){
    val数据=国家(1,2,3,4,5,6,7,8)
    countryData=listOf(数据)
    recyclerView.adapter=CountryDataAdapter(countryData)
    Log.d(“onFailure”、“ERROR”)
    }
    覆盖fun onResponse(调用:调用,响应:响应){
    if(response.issucessful){
    countryData=response.body()!!
    recyclerView.adapter=CountryDataAdapter(countryData)
    }
    }
    })
    }
    
    适配器:

    类CountryDataAdapter(私有变量countryDataList:List):
    RecyclerView.Adapter(){
    类RecyclerViewWholder(itemView:View):RecyclerView.ViewHolder(itemView){
    val countryName:TextView=itemView.findViewById(R.id.countryName)
    val casesTotal:TextView=itemView.findViewById(R.id.casesTotal)
    val casesToday:TextView=itemView.findViewById(R.id.casesToday)
    val deathTotal:TextView=itemView.findViewById(R.id.deathTotal)
    val deathToday:TextView=itemView.findViewById(R.id.deathToday)
    val recoveredAll:TextView=itemView.findViewById(R.id.recoveredAll)
    val-activeAll:TextView=itemView.findViewById(R.id.activeAll)
    val criticalAll:TextView=itemView.findViewById(R.id.criticalAll)
    fun bindData(countryDataList:List,position:Int){
    val项目=国家数据列表[位置]
    countryName.text=item.countryName.toString()
    casesTotal.text=item.cases.toString()
    casesToday.text=item.todayCases.toString()