我需要一些帮助。我从JSON.Fetching数据中获取数据。它由图像和文本组成,我使用快速适配器(mike penz)填充到回收器视图中,但是当我从回收器视图中选择指定的行时,它需要更改图像颜色。我可以在哪里使用选择器更改文本视图颜色,但我无法在所选行的图像视图中更改图像的颜色。请帮帮我。这是代码:
service_type_adapter.withOnClickListener(new FastAdapter.OnClickListener<Service_Type_Adapter>() {
@Override
public boolean onClick(View v, IAdapter<Service_Type_Adapter> adapter, Service_Type_Adapter item, int position) {
AppCompatImageView service_image= (AppCompatImageView) v.findViewById(R.id.service_image);
int service_imagecolors = ContextCompat.getColor(getApplicationContext(), R.color.skyblue);
service_image.setColorFilter(service_imagecolors, PorterDuff.Mode.SRC_IN);
service_type_adapter.select(position);
if (lastselectedposition != -1) {
service_type_adapter.deselect(lastselectedposition);
}
lastselectedposition = position;
servicetypename = item.getServicename();
action = item.getServiceid();
googlemap.clear();
onMapReady(googlemap);
return true;
}
});
答案 0 :(得分:0)
FastAdapter的OnClickListener
已经为您提供了所需的一切。它传递单击的项目,以及负责特定项目的Adapter
。
因此,当用户点击该项目(并且您已启用该项目的选择)时,FastAdapter
会自动将该项目的state
设置为已选中。
在这种情况下,有多种方法可以自动应用颜色:
最简单的解决方案是为该项目定义ColorStateList
而不是简单的颜色。例如,如果选择了状态,则可以使用Foreground
并定义半透明颜色。
一个非常简单的ColorStateList
看起来像这样:
return new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_selected},
new int[]{}
},
new int[] {
colorSelected,
Color.TRANSPARENT
}
);
Adapter
FastAdapter
允许您在选择时启用bindView
被调用。通过以下方式启用此功能:FastAdapter.withSelectWithItemUpdate(true)
在此之后调用该元素的bindView
方法,您只需检查isSelected
并定义ColorFilter
或不是
Adapter
如果适配器不应自动调用notify
方法,您也可以通过fastAdapter.notifyAdapterItemChanged(position)
自行执行此操作(您可以选择另外传递payload,这样您就可以检查对于bindView
方法中的那个之后的bindView
方法中的isSelected
方法再次检查Error 500 - Internal Server Error
方法,并根据需要处理用户界面