我想实现此UI以使用户一次选择一个分支。 我现在所做的是当用户选择它时,每个项目中的文本的setCompoundDrawablesWithIntrinsicBounds。
问题是"如果我选择项目编号1然后选择项目编号4,如何从项目编号1中删除选择?我不想再次点击第1项以删除选择"
请注意,此屏幕仅供用户选择一个项目。
这是我在Kotlin的代码但是如果你在JAVA中建议一个解决方案就可以了:
var selectedBranch = false
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.packageNumber.text = branches?.get(position)?.nameEn ?: ""
check = ContextCompat.getDrawable(context, R.drawable.ic_select_branch)
holder.itemView.setOnClickListener {
if(!selectedBranch) {
holder.packageNumber.setCompoundDrawablesWithIntrinsicBounds(null, null, check, null)
selectedBranch = true
}
else {
holder.packageNumber.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null)
selectedBranch = false
}
}
}
答案 0 :(得分:1)
1.创建一个包含
的Model
类
String text;
boolean isTextSelected;
2.单击适配器中的项目,Update
您的模型类' isTextSelected'字段。
3. Notify
你的adpater。
答案 1 :(得分:0)
你需要添加这个" selectedBranch"数据类中的布尔值,您在分支列表中用作模型
将此代码添加到bindViewHolder
return(,$resTable)
我希望它有效。
答案 2 :(得分:0)
不是在每个项目中使用标记,而是 Use integer variable to store the last clicked position
最初clickedposition=-1
在适配器类中使用它,
if(position == clickedposition) {
holder.packageNumber.setCompoundDrawablesWithIntrinsicBounds(null, null, check, null)
}
else {
holder.packageNumber.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null)
}
holder.itemView.setOnClickListener {
clickedposition=position;
notifyDataSetChanged();
}
答案 3 :(得分:0)
将一个布尔变量带入branche pojo类。 然后将接口转换为适配器以将click事件处理到recyclelerview,如下面的代码..
onItemClickListner onItemClickListner;
public void setOnItemClickListner(RecyclerViewAdpater.onItemClickListner onItemClickListner) {
this.onItemClickListner = onItemClickListner;
}
public interface onItemClickListner {
void onClick(Branch str);//pass your object types.
}
@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
// below code handle click event on recycler view item.
Branch data=branches.get(position);
if (data.isSelected()){
}
else{
}
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClickListner.onClick(data);
}
});
}
然后在适配器绑定到代码后面的recycleler视图调用..
recyclerViewAdpater.setOnItemClickListner(new RecyclerViewAdpater.onItemClickListner() {
@Override
public void onClick(Branch str)
{
str.setSelected(true);
recyclerViewAdpater.notifyDataSetChanged();
}
});