Android Studio无法导入适配器

时间:2019-05-15 12:09:30

标签: android android-studio kotlin listadapter

我不太确定这是我的代码问题还是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!
   }
...
}

0 个答案:

没有答案