[当我参加应该具有RecyclerView的活动时,它不会立即显示ReyclerView。由于某些原因,它仅在我按下SearchView图标后才显示RecyclerView。
After I press the search icon和Before I press the search icon。这是我的RecyclerView适配器:
class BlogRecyclerAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
super.onAttachedToRecyclerView(recyclerView)
var con = recyclerView.context
}
var items: List<BlogPost> = ArrayList()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return BlogViewHolder(
LayoutInflater.from(parent.context).inflate(R.layout.user_row, parent, false)
)
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
when(holder) {
is BlogViewHolder ->{
holder.bind(items.get(position))
}
}
}
override fun getItemCount(): Int {
return items.size
}
fun submitList(blogList: List<BlogPost>){
items = blogList
}
class BlogViewHolder constructor(
itemView: View
): RecyclerView.ViewHolder(itemView){
val phoneButton = itemView.phoneButton
val locationButton = itemView.locationButton
val nameButton = itemView.nameButton
fun bind(blogPost: BlogPost){
//שם
nameButton.setText(blogPost.name)
//אפטר
if(blogPost.place=="after"){
locationButton.setBackgroundColor(Color.parseColor("#F03434"))
locationButton.setText("אפטר")
}
}
}
这是应该显示RecyclerView的活动,还包含搜索栏:
class Tavla : AppCompatActivity() {
private lateinit var blogAdapter: BlogRecyclerAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tavla)
initRecycelrView()
addDataset()
}
//The method which the search button calls
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.main_menu, menu)
val item = menu!!.findItem(R.id.action_search)
val searchView = item.actionView as androidx.appcompat.widget.SearchView
return super.onCreateOptionsMenu(menu)
}
private fun addDataset(){
val data = DataSource.createDataSet()
blogAdapter.submitList(data)
}
private fun initRecycelrView(){
recyclerView.apply {
recyclerView.layoutManager = LinearLayoutManager(this@Tavla)
val topSpacingDecoration = TopSpacingItemDecoration(30)
addItemDecoration(topSpacingDecoration)
blogAdapter = BlogRecyclerAdapter()
adapter = blogAdapter
}
}
}
我从“数据源”获得列表
尝试在blogAdapter.notifyDataSetChanged()
中的addDataset()
下添加onCreate
以便它会通知适配器在活动加载时数据已更改。
将其粘贴到oncreate方法中。
addDataset()initRecycelrView()