我想获取在recyclerview适配器中选择的活动中的选定ID
holder.images.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (holder.checked.getVisibility() == View.VISIBLE) {
holder.checked.setVisibility(View.GONE);
} else if (holder.checked.getVisibility() == View.GONE) {
holder.checked.setVisibility(View.VISIBLE);
}
}
});
答案 0 :(得分:1)
使用列表来处理您选择的项目或职位
为商店所选商品声明清单
private List<Integer> selectedPositions=new ArrayList();
如下所示在onBindViewHolder中更新代码
holder.checked.setVisibility(selectedPositions.contains(position)?View.VISIBLE:View.GONE);
holder.images.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (selectedPositions.contains(position)) {
holder.checked.setVisibility(View.GONE);
selectedPositions.removeAt(selectedPositions.indexOf(position));
} else {
holder.checked.setVisibility(View.VISIBLE);
selectedPositions.add(position);
}
}
});
答案 1 :(得分:1)
在这里,我创建了清单并放置了数据大小的解决方案
public static ArrayList<Integer> dataSize=new ArrayList<>();
并传递给适配器
holder.checked.setVisibility(idpositions.get(position)==0?View.GONE:View.VISIBLE);
holder.images.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (dataSize.size()>0) {
if (holder.checked.getVisibility() == View.VISIBLE) {
holder.checked.setVisibility(View.GONE);
dataSize.set(position,0);
} else if (holder.checked.getVisibility() == View.GONE) {
dataSize.add(position,data.getId());
holder.checked.setVisibility(View.VISIBLE);
}
}
}
});
然后单击按钮即可获取该数组列表并获取您选择的值
if(dataSize.size()>0){
for (int i = 0; i < dataSize.size(); i++) {
if (dataSize.get(i)==0){
continue;
}else {
ids= ids+String.valueOf(dataSize.get(i))+",";
}
}
Toast.makeText(this, ids, Toast.LENGTH_SHORT).show();
}
答案 2 :(得分:0)
现在,您需要声明一个列表来保存那些选定的ID
private List<DATA_TYPE> selectedIds = new ArrayList();
您可以做的是在模型中声明一个isSelected
布尔值。在onBindViewHolder
方法中,将可见性设置为
if (YOUR_POJO.isSelected()) {
holder.checked.setVisibility(View.VISIBLE);
} else {
holder.checked.setVisibility(View.GONE);
}
当您单击图像时,检查是否已基于该图像进行选择,您可以添加/删除其ID
holder.images.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(YOUR_POJO.isSelected()){
YOUR_POJO.setSelected(false);
if (selectedIds.contains(YOUR_POJO.getId()){
selectedIds.remove(YOUR_POJO.getId());
}
} else {
YOUR_POJO.setSelected(true);
selectedIds.add(YOUR_POJO.getId());
}
notifyItemChanged(holder.getAdapterPosition(), YOUR_POJO);
}
});
希望这会有所帮助。
答案 3 :(得分:0)
创建这样的接口类;
public interface ItemSelectedListener{
void onItemSelected(int selectedposition);
}
在您的适配器中初始化您的接口;
private List<ItemSelectedListener> mItemSelectedSubscribers = new ArrayList<ItemSelectedListener>();
在适配器中添加此方法;
public void subscribeItemSelection(ItemSelectedListenerlistener) {
mItemSelectedSubscribers .add(listener);
}
在点击事件中设置此循环;
for (ItemSelectedListener listener : mMediaSelectedSubscribers) {
listener.onItemSelected(position);
}
在您的活动中,实现您的界面,您将设置一个实现的方法。这种方法看起来像这样;
int selectedPosition;
@Override
public void onMediaSelected(int position) {
selectedPosition = position;
}
执行此操作时,您可以在活动中使用想要的位置
希望这项帮助!