android - Recyclerview 上的所有按钮清单都不起作用
问题描述
我有带有复选框的recyclerview,我想使用按钮检查所有数据。我尝试了本教程,但是当我单击按钮时,日志调用 isSelectedAll 函数但无法选中复选框。我的代码有什么问题?
这是我的适配器代码
var isSelectedAll = false
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListApproveDeatilViewHolder {
val itemView = LayoutInflater.from(parent.context)
.inflate(R.layout.activity_list_approve_row, parent, false)
return ListApproveDeatilViewHolder(itemView)
}
private lateinit var mSelectedItemsIds: SparseBooleanArray
fun selectAll() {
Log.e("onClickSelectAll", "yes")
isSelectedAll = true
notifyDataSetChanged()
}
override fun onBindViewHolder(holder: ListApproveDeatilViewHolder, position: Int) {
val approve = dataSet!![position]
holder.soal.text = approve.title
holder.kategori.text = approve.kategori
if (!isSelectedAll){
holder.checkBox.setChecked(false)
} else {
holder.checkBox.setChecked(true)
}
}
这是我的活动代码
override fun onCreate(savedInstanceState: Bundle?) {
private var adapter: ListApproveDetailAdapter? = null
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_list_approve)
ButterKnife.bind(this)
getData()
// this is my button onclick code
select.setOnClickListener(){
if (select.getText().toString().equals("Select all")){
Toast.makeText(this, "" + select.getText().toString(), Toast.LENGTH_SHORT).show()
adapter?.selectAll()
select.setText("Deselect all")
} else {
Toast.makeText(this, "" + select.getText().toString(), Toast.LENGTH_SHORT).show()
select.setText("Select all")
}
}
}
//this is for get my data for the recyclerview
fun getData() {
val created_by = intent.getStringExtra(ID_SA)
val tgl_supervisi = intent.getStringExtra(TGL_SURVEY)
val no_dlr = intent.getStringExtra(NO_DLR)
API.getListApproveDetail(created_by, tgl_supervisi, no_dlr).enqueue(object : Callback<ArrayList<ListApprove>> {
override fun onResponse(call: Call<ArrayList<ListApprove>>, response: Response<ArrayList<ListApprove>>) {
if (response.code() == 200) {
tempDatas = response.body()
Log.i("Data Index History", "" + tempDatas)
recyclerviewApprove?.setHasFixedSize(true)
recyclerviewApprove?.layoutManager = LinearLayoutManager(this@ListApproveActivity)
recyclerviewApprove?.adapter = ListApproveDetailAdapter(tempDatas)
adapter?.notifyDataSetChanged()
} else {
Toast.makeText(this@ListApproveActivity, "Error", Toast.LENGTH_LONG).show()
}
swipeRefreshLayout.isRefreshing = false
}
override fun onFailure(call: Call<ArrayList<ListApprove>>, t: Throwable) {
Toast.makeText(this@ListApproveActivity, "Error", Toast.LENGTH_SHORT).show()
swipeRefreshLayout.isRefreshing = false
}
})
}
感谢您的任何帮助 :)
解决方案
正如我在评论中已经提到的,您正在使用两个不同的适配器实例。现在我看到你已经adapter
在全球范围内宣布了。只需按如下方式修改您的代码并确保response.body()
它具有数据:
if (response.code() == 200) {
tempDatas = response.body()
Log.i("Data Index History", "" + tempDatas)
recyclerviewApprove?.setHasFixedSize(true)
recyclerviewApprove?.layoutManager = LinearLayoutManager(this@ListApproveActivity)
adapter = ListApproveDetailAdapter(tempDatas)
recyclerviewApprove?.adapter=adapter
} else {
Toast.makeText(this@ListApproveActivity, "Error", Toast.LENGTH_LONG).show()
}
推荐阅读
- javascript - 如何使用显示在表格单元格中的不同数据设置背景色 html 表格单元格
- eclipse - 是否可以从功能中获取资源?
- docker - 在 Zeppelin 上以 Apache Flink 独立模式运行作业我有这个错误“TooLongFrameException:调整后的帧长度超过”
- reactjs - 使用 react-redux-form 提交表单时出现刷新问题
- sql - How to return distinct multi-word strings from blocks of usage log text with POSIX?
- windows - properly decipher registry REG_BINARY with python 3 winreg?
- apache-kafka - 无法以 KafkaNull 作为值发送消息
- python - BeautifulSoup,选择要提取的文本
- python - 使用 Dash 生成多个绘图
- python-3.x - 如何使用 Python 3 中的类来增加程序的功能?