我有一个recyclerview,我想在其中更改所选项目的颜色,并在未选中时重新更改它。我使用了一个字符串数组列表,并且为此使用了一个接口,这是适配器中的接口代码-
public interface Callback{
void onItemClicked(String i_name, boolean longClick);
}
这是onclick和onlongclick代码-
@Override
public void onClick(View view) {
String[] tag = ((String) view.getTag()).split(":");
String i_name = tag[1];
Toast.makeText(context, ""+i_name, Toast.LENGTH_SHORT).show();
if(callback != null)
{
callback.onItemClicked(i_name,false);
}
}
@Override
public boolean onLongClick(View view) {
String[] tag = ((String) view.getTag()).split(":");
String i_name = tag[1];
if(callback != null)
{
callback.onItemClicked(i_name,false);
}
return false;
}
这是切换选择的代码-
public void toggleSelected(String i_name)
{
final boolean newState = !selectedList.contains(i_name);
if(newState)
{
// i want to give background color to i_name
selectedList.add(i_name);
Toast.makeText(context, "selected list1- "+selectedList, Toast.LENGTH_SHORT).show();
}
else
{
selectedList.remove((String) i_name);
Toast.makeText(context, "selected list2- "+selectedList, Toast.LENGTH_SHORT).show();
}
notifyDataSetChanged();
}
这是片段中的onItemClicked代码-
@Override
public void onItemClicked(String i_name, boolean longClick) {
if(longClick)
{
((MyCategoryAdaptercheckbox) MyAdapter).toggleSelected(i_name);
}
else
{
((MyCategoryAdaptercheckbox) MyAdapter).toggleSelected(i_name);
}
}
这是我正在设置标签的onbindviewholder中的代码-
getMyCategoryAdapter1 = category_name.get(i);
viewHolder.view.setActivated(selectedList.contains(i));
viewHolder.view.setTag("items:" + getMyCategoryAdapter1.getC_name());
viewHolder.view.setOnClickListener(this);
viewHolder.view.setOnLongClickListener(this);
我想使用toggleselected()方法为i_name提供背景颜色。我该怎么做。请帮忙。
答案 0 :(得分:0)
在回收站视图中选择和取消选择项目的基本想法。
在模型中保留一个标记,以供选择和取消选择。
对于e.x
boolean isSelected;
填充数据时,默认情况下,列表中isSelected
的所有值均为false。
然后在长按中,仅在您的数组列表中将该位置的isSelected
的值设置为true,然后调用notifyDataSetChanged
。
并在您的onbindviewholder
支票中
if(yourModel.isSelected){
// show the row selected
}else {
// show the row unselected
}
希望您能明白。