我有一个回收站视图,该视图获取一个数组并为其每个项目创建一个复选框。我希望在“回收者”视图的顶部选中一个复选框,如果选中该复选框,那么“回收者”视图的所有复选框也将被选中。我该怎么做到?
回收站视图适配器:
class RecyclerViewAdapter(val context: Context, val myArray: Array<String>): RecyclerView.Adapter<RecyclerViewAdapter.Holder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
val view = LayoutInflater.from(context).inflate(R.layout.recycler_view_pattern,parent,false)
return Holder(view)
}
override fun getItemCount(): Int {
return myArray.count()
}
override fun onBindViewHolder(holder: Holder, position: Int) {
return holder.bind(myArray[position])
}
inner class Holder(itemView: View?): RecyclerView.ViewHolder(itemView){
val checkBox = itemView?.findViewById<CheckBox>(R.id.checkBox)
fun bind(str: String){
checkBox?.text = str
checkBox?.setOnCheckedChangeListener(object : CompoundButton.OnCheckedChangeListener{
override fun onCheckedChanged(p0: CompoundButton?, p1: Boolean) {
if (checkBox.isChecked){
//do something
}
else{
//do something
}
}
})
}
}
}
回收者视图模式:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dp">
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000"
android:textSize="14sp" />
</LinearLayout>
答案 0 :(得分:0)
在适配器中创建全局布尔变量
driver.wait(until.elementLocated(webdriver.By.css('div.border-right:nth- child(2)')), 1000)
.then((element) => {
element.click();
});
然后在您的回收者视图中创建一个公共方法
public boolean isAllChecked = false;
然后在您的主机活动/片段上,在“ 检查所有复选框”上设置一个选中的已更改侦听器,并从该方法传递的内部调用 recyclerViewAdapter.setAllChecked()方法在onCheckedChangedMethod提供的布尔值中。
现在根据isAllChecked的条件编辑您的 bind 方法
public void setAllChecked(boolean isAllChecked) {
this.isAllChecked = isAllChecked;
notifyDataSetChanged;
}
答案 1 :(得分:0)
感谢所有尝试提供帮助的人,我认为唯一的解决方案是制作另一个回收者视图适配器,该适配器创建选中的复选框,并在选中“全部选中”复选框时将其设置为回收者视图。
MainActivity:
checkAllCheckBox.setOnCheckedChangeListener(object : CompoundButton.OnCheckedChangeListener{
override fun onCheckedChanged(p0: CompoundButton?, p1: Boolean) {
if (p1){
recyclerView.adapter = RecyclerViewAdapter
}
else{
recyclerView.adapter = AllCheckedRecyclerViewAdapter
}
}
})
AllCheckedRecyclerViewAdapter:
inner class AllCheckedRecyclerViewAdapter(val context: Context, val myArray: Array<String>): RecyclerView.Adapter<AllCheckedRecyclerViewAdapter.Holder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
val view = LayoutInflater.from(context).inflate(R.layout.recycler_view_pattern,parent,false)
return Holder(view)
}
override fun getItemCount(): Int {
return myArray.count()
}
override fun onBindViewHolder(holder: Holder, position: Int) {
return holder.bindIng(myArray[position])
}
inner class Holder(itemView: View?): RecyclerView.ViewHolder(itemView){
val checkBox = itemView?.findViewById<CheckBox>(R.id.checkBox)
fun bind(str: String){
checkBox?.text = str
checkBox!!.isChecked = true
ingCheckBox.setOnCheckedChangeListener(object : CompoundButton.OnCheckedChangeListener{
override fun onCheckedChanged(p0: CompoundButton?, p1: Boolean) {
//do sth
}
})
}
}
}