Kotline : 回收器视图和片段错误 E/回收器视图: 未连接适配器;跳过布局



>我在活动中创建了一个回收器视图,当我尝试合并片段时,它给了我"错误 E/回收器视图:未连接适配器;跳过布局">

我的旧示例输出 我的旧示例输出

现在我想放置底部导航和片段。下面是我的代码

我的活动文件 :activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingView"
android:background="@color/colorAccent"
tools:context=".MainActivity">
<!-- <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
-->
<TextView
android:id="@+id/Voc"
android:layout_height="wrap_content"
android:text="Section 1"
android:layout_width="wrap_content"
android:paddingTop="3dp"
android:paddingBottom="3dp"
android:paddingLeft="10dp"
android:textSize="25sp"
app:layout_constraintTop_toTopOf="parent"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/Voc"
/>
<TextView
android:id="@+id/sep_id"
android:layout_height="wrap_content"
android:text="Section 2"
android:layout_width="wrap_content"
android:paddingTop="6dp"
android:paddingBottom="3dp"
android:textSize="25sp"
android:paddingLeft="10dp"
app:layout_constraintTop_toBottomOf="@id/my_recycler_view"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/speaking"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/sep_id"
android:paddingLeft="10dp"/>
</android.support.constraint.ConstraintLayout>

回收机布局 :row_post.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="120dp"
android:layout_height="120dp"
>
<!--  <LinearLayout
android:id="@+id/view_main_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"> -->
<ImageView
android:id="@+id/image_view_id_row"
android:layout_width="match_parent"
android:layout_marginRight="10dp"
android:src="@drawable/sp2"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_height="90dp"
android:background="@color/colorPrimary"
android:scaleType="fitXY"
/>
<TextView
android:id="@+id/username"
android:text="Loading Username.."
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15sp"
app:layout_constraintTop_toBottomOf="@id/image_view_id_row"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:textAlignment="center"
android:layout_marginRight="10dp"
/>
<!--   "
android:src="@drawable/sp1"-->
</android.support.constraint.ConstraintLayout>

主布局或带框架的登录页面:activity_main2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/containerm"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/frame_layout_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigationView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:layout_gravity="bottom"
android:layout_weight="0"
android:background="?android:attr/windowBackground"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@color/white"
app:itemTextColor="@color/white"
app:menu="@menu/navigation"/>
</LinearLayout>

kotlin 类:片段调用(链接到activity_main.xml(

package com.ammara.ammara.TEST
import android.content.Context
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.net.Uri
import android.support.v7.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.activity_main.*
import com.ammara.ammara.ielts.model.Samples
class FragmentCall:Fragment() {
val TAG="Call Fragment"
override fun onAttach(context: Context?) {
super.onAttach(context)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater!!.inflate(R.layout.activity_main,container,false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
}
override fun onStart() {
super.onStart()
}
override fun onResume() {
super.onResume()
}
override fun onPause() {
super.onPause()
}
override fun onStop() {
super.onStop()
}
override fun onDestroyView() {
super.onDestroyView()
}
override fun onDestroy() {
super.onDestroy()
}
override fun onDetach() {
super.onDetach()
}
}

Kotlin 类 Main2Activity (链接到 activity_main2.xml(

package com.ammara.ammara.TEST
import android.app.AlertDialog
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.support.design.widget.BottomNavigationView
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.LinearLayoutManager
import com.ammara.ammara.ielts.R.menu.navigation
import com.ammara.ammara.ielts.model.Samples
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.activity_main2.*
class Main2Activity : AppCompatActivity() {
var isFragmentOneLoaded=true
val manager=supportFragmentManager
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.navigation_home -> {
ShowFragmentOne()
return@OnNavigationItemSelectedListener true
}
R.id.navigation_dashboard -> {
ShowFragmentOne()
return@OnNavigationItemSelectedListener true
}
R.id.navigation_notifications -> {
ShowFragmentOne()
return@OnNavigationItemSelectedListener true
}
}
false
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
ShowFragmentOne()
navigationView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
}
fun ShowFragmentOne(){
val transaction=manager.beginTransaction()
val fragment=FragmentCall()
transaction.replace(R.id.frame_layout_id,fragment)
transaction.addToBackStack(null)
transaction.commit()
AlertDialog.Builder( this)
.setMessage(this.packageName)
.setPositiveButton("ok") { p0, p1 ->
}
.create()
.show()
}
}

适配器类链接到row_post

package com.ammara.ammara.TEST
import android.content.Intent
import android.os.Parcel
import android.os.Parcelable
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import com.ammara.ammara.TEST.model.Samples
import com.squareup.picasso.Picasso
import kotlinx.android.synthetic.main.row_post.view.*
import android.os.Bundle
import android.support.v4.content.ContextCompat.startActivity
class PostsAdapter (val posts: ArrayList<Samples>) : RecyclerView.Adapter<PostsAdapter.PostsViewHolder> (){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PostsAdapter.PostsViewHolder {
val view: View = LayoutInflater.from(parent.context).inflate(R.layout.row_post,parent,false)
val holder= PostsViewHolder(view)
view.setOnClickListener{
val intent= Intent(parent.context, SampleTest::class.java)
val extras = Bundle()
extras.putString("title",posts[holder.adapterPosition].title)
extras.putString("photoUrl",posts[holder.adapterPosition].photoUrl.toString())
intent.putExtras(extras)
parent.context.startActivity(intent)
}
return holder
}
override fun getItemCount() = posts.size
override fun onBindViewHolder(holder: PostsViewHolder, position: Int) {
holder.title.text=posts[position].title
holder.image.setImageURI(posts[position].photoUrl)
//  Picasso.get().load(posts[position].photoUrl).into(holder.image)
}
class PostsViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
val image: ImageView=itemView.findViewById(R.id.image_view_id_row)
val title: TextView=itemView.findViewById(R.id.username)
}
}

现在的问题是...早些时候,我的活动中有以下代码行,现在由于片段,活动没有得到调用。我应该把代码行放在哪里

val myImageList = intArrayOf(R.drawable.sp1, R.drawable.sp2, R.drawable.sp3, R.drawable.sp4, R.drawable.sp5, R.drawable.sp6, R.drawable.sp7, R.drawable.sp8, R.drawable.sp9, R.drawable.sp10)
val myImageList1 = arrayListOf("@drawable/sp1", "@drawable/sp2", "@drawable/sp3", "@drawable/sp4", "@drawable/sp5", "@drawable/sp6", "@drawable/sp7", "@drawable/sp8", "@drawable/sp9", "@drawable/sp10")
val myImageList2 = arrayListOf("sp1", "sp2", "sp3", "sp4", "sp5", "sp6", "sp7", "sp8", "sp9", "sp10")
val samples= arrayListOf<Samples>()
for (i in 0..9){
val imgUri = Uri.parse("android.resource://com.ammara.ammara.ielts/"+myImageList[i])
samples.add(Samples("Sample# $i", photoUrl=imgUri,price=1.99))
}
val vSpeaking= arrayListOf<Samples>()
for (i in 0..9){
val imgUri = Uri.parse("android.resource://com.ammara.ammara.ielts/"+myImageList[i])
vSpeaking.add(Samples("Sample# $i",photoUrl=imgUri,price=1.99))
}
my_recycler_view.layoutManager =LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,false)
my_recycler_view.adapter = PostsAdapter(samples)
speaking.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,false)
speaking.adapter = PostsAdapter(vSpeaking)

我应该把代码行放在哪里

将其放在片段中,在其中膨胀包含RecyclerView的视图onCreateView.

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater!!.inflate(R.layout.activity_main,container,false)
//your code here
return view
}

有关何时在片段中执行哪些操作的信息,请参阅 https://developer.android.com/guide/components/fragments。

最新更新