使用信标检测更改 recyclerview 项目的 alpha
Change the alpha of recyclerview item with beacon detection
在 Fragment
中,我有一个使用 RecyclerView
(适配器和查看器)构建的项目列表。
列表中的每一项都与一个估计信标相关联。
所以我想在检测到信标时突出显示项目视图(setAlpha 或添加 imageView)。
信标检测在片段文件中:
beaconManager.setRangingListener(new BeaconManager.RangingListener() {
@Override
public void onBeaconsDiscovered(Region region, List<Beacon> list) {
if (!list.isEmpty()) {
Beacon nearestBeacon = list.get(0);
replaceIconBeaconCard(nearestBeacon);
Log.d("Airport", "Nearest places: " + nearestBeacon);
}
}
});
实际上,我在项目视图上显示了一个信标图标。但目的是突出显示检测到的项目并在其他项目上放置 alpha。
private void replaceIconBeaconCard(Beacon beacon){
for(SItem item: items) {
if (!item.getMajor().equals("")) {
int i = item.getId().intValue();
SCard card = listCards.get(i-1);
if (Integer.parseInt(item.getMajor()) == beacon.getMajor()) {
rv.getLayoutManager().scrollToPosition(i);
int resID = getResources().getIdentifier("beacon_ice", "drawable", getActivity().getPackageName());
card.setField_1(resID);
} else {
card.setField_1(Color.TRANSPARENT);
}
}
}
mAdapter.notifyDataSetChanged();
}
我不知道如何访问项目布局和更改 alpha。
最后,我使用适配器中的对象 SCard 访问了布局 alpha:
在 activity 中我设置了 alpha
card.setField_2(0.5F);
在取景器中我添加了 setter
public void setItemCardField2(float alpha) {
swipeLayout.setAlpha(alpha);
}
而适配器完成了工作
final ShowroomCard card = mItemList.get(position);
viewHolder.setItemCardField2(card.getField_2());
在 Fragment
中,我有一个使用 RecyclerView
(适配器和查看器)构建的项目列表。
列表中的每一项都与一个估计信标相关联。
所以我想在检测到信标时突出显示项目视图(setAlpha 或添加 imageView)。
信标检测在片段文件中:
beaconManager.setRangingListener(new BeaconManager.RangingListener() {
@Override
public void onBeaconsDiscovered(Region region, List<Beacon> list) {
if (!list.isEmpty()) {
Beacon nearestBeacon = list.get(0);
replaceIconBeaconCard(nearestBeacon);
Log.d("Airport", "Nearest places: " + nearestBeacon);
}
}
});
实际上,我在项目视图上显示了一个信标图标。但目的是突出显示检测到的项目并在其他项目上放置 alpha。
private void replaceIconBeaconCard(Beacon beacon){
for(SItem item: items) {
if (!item.getMajor().equals("")) {
int i = item.getId().intValue();
SCard card = listCards.get(i-1);
if (Integer.parseInt(item.getMajor()) == beacon.getMajor()) {
rv.getLayoutManager().scrollToPosition(i);
int resID = getResources().getIdentifier("beacon_ice", "drawable", getActivity().getPackageName());
card.setField_1(resID);
} else {
card.setField_1(Color.TRANSPARENT);
}
}
}
mAdapter.notifyDataSetChanged();
}
我不知道如何访问项目布局和更改 alpha。
最后,我使用适配器中的对象 SCard 访问了布局 alpha:
在 activity 中我设置了 alpha
card.setField_2(0.5F);
在取景器中我添加了 setter
public void setItemCardField2(float alpha) {
swipeLayout.setAlpha(alpha);
}
而适配器完成了工作
final ShowroomCard card = mItemList.get(position);
viewHolder.setItemCardField2(card.getField_2());