我不太确定这是我的代码问题还是Android Studio的错误。我正在尝试在我的主要活动中实例化我的适配器以实现recyclerview。它在软件包适配器中,但是我尝试将其与活动放在同一目录中,但问题仍然存在。
Android Studio建议导入适配器(Alt-Enter),但是在执行此操作后,实际上什么也没发生。手动导入也不起作用,我得到“未解决的参考:TodoAdapter”。尽管文件显然存在,但几乎就像文件不存在一样。
我尝试了一切:将适配器公开,使高速缓存无效,使用另一台PC,问题仍然存在。
这是我的代码:
TodoAdapter:
public class TodoAdapter : ListAdapter<Todo, TodoAdapter.ViewHolder>(TodoDiffCallBack()){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(ListItemTodoBinding.inflate(
LayoutInflater.from(parent.context), parent, false))
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val todo = getItem(position)
holder.apply {
bind(createOnClickListener(todo.id), todo)
itemView.tag = todo
}
}
private fun createOnClickListener(todoId: Int): View.OnClickListener {
return View.OnClickListener {
Log.v("its working!","workssss")
}
}
class ViewHolder(
private val binding: ListItemTodoBinding
) : RecyclerView.ViewHolder(binding.root){
fun bind(listener: View.OnClickListener, item: Todo) {
binding.apply {
clickListener = listener
todo = item
executePendingBindings()
}
}
}
private class TodoDiffCallBack : DiffUtil.ItemCallback<Todo>() {
override fun areItemsTheSame(oldItem: Todo, newItem: Todo): Boolean {
return oldItem.id == newItem.id
}
override fun areContentsTheSame(oldItem: Todo, newItem: Todo): Boolean {
return oldItem == newItem
}
}
}
(该类中没有错误,并且绑定有效)
这是我的MainActivity
import android.content.Intent
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import com.test.myapp.adapters.TodoAdapter //unresolved reference here as well!
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProviders
import com.test.myapp.util.Injectors
import com.test.myapp.viewmodels.TodoListViewModel
import kotlinx.android.synthetic.main.activity_main.*
...
class MainActivity : AppCompatActivity() {
...
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
val adapter = TodoAdapter() //Unresolved reference!
}
...
}