使用信标检测更改recyclerview项目的alpha

时间:2016-10-13 09:22:43

标签: android android-recyclerview adapter ibeacon android-viewholder

RecyclerView中,我有一个使用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); } } }); 构建的项目列表(适配器和视图)。 列表中的每个项目都与一个estimote信标链接。 所以我想在检测到信标时突出显示项目视图(setAlpha或添加imageView)。

信标检测位于片段文件中:

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放在其他项目上。

TOP

我不知道如何访问项目布局并更改alpha。

1 个答案:

答案 0 :(得分:0)

最后,我在适配器中使用对象SCard访问布局alpha:

在活动中我设置了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());