Android RecyclerView:未连接适配器;跳过kotlin中的布局
recyclerView不显示任何内容 我检查了适配器及其项(notifyDatasetChanged已调用) 和调用线程,它应该是工作 我使用的是Android RecyclerView:未连接适配器;跳过kotlin中的布局,android,kotlin,Android,Kotlin,recyclerView不显示任何内容 我检查了适配器及其项(notifyDatasetChanged已调用) 和调用线程,它应该是工作 我使用的是android.support.v7.widget.RecyclerView 视图类: class HomeView(private val context: Context, swipeRefreshEnabled: Boolean = true) : HomeViewContract { private var mRootVie
android.support.v7.widget.RecyclerView
视图类:
class HomeView(private val context: Context, swipeRefreshEnabled: Boolean = true) : HomeViewContract {
private var mRootView: View = context.inflate(R.layout.fragment_home)
private var mAdapter: HomeAdapter
private var list: RecyclerView
init {
Log.d("HomeView","init called from ${Thread.currentThread().name}")
mAdapter = HomeAdapter()
this.list = mRootView.findViewById(R.id.home_recycler_view) as RecyclerView
val linearLayoutManager = LinearLayoutManager(context)
linearLayoutManager.orientation = LinearLayoutManager.VERTICAL
list.apply{
adapter = mAdapter
layoutManager = linearLayoutManager
}
// ...
}
}
class HomeFragment : Fragment() {
private lateinit var homeView: HomeView
override fun onCreateView(...) = container?.inflate(R.layout.fragment_home)
fun make(context: Context){
this.homeView = HomeView(context)
}
val homeFragment = HomeFragment()
homeFragment.make(this)
loadFragment(homeFragment)
片段:
class HomeView(private val context: Context, swipeRefreshEnabled: Boolean = true) : HomeViewContract {
private var mRootView: View = context.inflate(R.layout.fragment_home)
private var mAdapter: HomeAdapter
private var list: RecyclerView
init {
Log.d("HomeView","init called from ${Thread.currentThread().name}")
mAdapter = HomeAdapter()
this.list = mRootView.findViewById(R.id.home_recycler_view) as RecyclerView
val linearLayoutManager = LinearLayoutManager(context)
linearLayoutManager.orientation = LinearLayoutManager.VERTICAL
list.apply{
adapter = mAdapter
layoutManager = linearLayoutManager
}
// ...
}
}
class HomeFragment : Fragment() {
private lateinit var homeView: HomeView
override fun onCreateView(...) = container?.inflate(R.layout.fragment_home)
fun make(context: Context){
this.homeView = HomeView(context)
}
val homeFragment = HomeFragment()
homeFragment.make(this)
loadFragment(homeFragment)
活动:
class HomeView(private val context: Context, swipeRefreshEnabled: Boolean = true) : HomeViewContract {
private var mRootView: View = context.inflate(R.layout.fragment_home)
private var mAdapter: HomeAdapter
private var list: RecyclerView
init {
Log.d("HomeView","init called from ${Thread.currentThread().name}")
mAdapter = HomeAdapter()
this.list = mRootView.findViewById(R.id.home_recycler_view) as RecyclerView
val linearLayoutManager = LinearLayoutManager(context)
linearLayoutManager.orientation = LinearLayoutManager.VERTICAL
list.apply{
adapter = mAdapter
layoutManager = linearLayoutManager
}
// ...
}
}
class HomeFragment : Fragment() {
private lateinit var homeView: HomeView
override fun onCreateView(...) = container?.inflate(R.layout.fragment_home)
fun make(context: Context){
this.homeView = HomeView(context)
}
val homeFragment = HomeFragment()
homeFragment.make(this)
loadFragment(homeFragment)
框架将自动调用片段的
onCreateView
方法。此调用创建的布局将包含您的RecyclerView
的一个实例,并且此布局实例将是布局过程的一部分
您在HomeView
中所做的是扩展布局的另一个实例,并将适配器添加到第二个实例中的RecyclerView
相反,您可以在onViewCreated
中创建HomeView
,如下所示:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
this.homeView = HomeView(context, view)
}
然后在此视图
实例中找到RecyclerView
(这是您的onCreateView
方法所膨胀的一个,框架只是将其传递给您):
框架将自动调用片段的
onCreateView
方法。此调用创建的布局将包含您的RecyclerView
的一个实例,并且此布局实例将是布局过程的一部分
您在HomeView
中所做的是扩展布局的另一个实例,并将适配器添加到第二个实例中的RecyclerView
相反,您可以在onViewCreated
中创建HomeView
,如下所示:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
this.homeView = HomeView(context, view)
}
然后在此视图
实例中找到RecyclerView
(这是您的onCreateView
方法所膨胀的一个,框架只是将其传递给您):
请发布HomeAdapter的代码。它从哪里获得数据?您是否尝试过在任何适配器方法(例如onCreateViewHolder()、getItemCount())中设置断点?请发布HomeAdapter的代码。它从哪里获得数据?您是否尝试过在任何适配器方法(例如onCreateViewHolder()、getItemCount())中设置断点?为什么不尝试重写onCreateView(…)=viewHome.getRootView()?:)为什么不尝试重写onCreateView(…)=viewHome.getRootView()?:)