【发布时间】:2016-10-03 10:48:53
【问题描述】:
我有一个 RecyclerView,它显示了从数据库派生的一系列视图。我希望通过突出显示其边缘来确认用户已选择其中一个视图,并且我已经成功地这样做了。如果用户继续选择不同的选项,我希望删除原始选择上的突出显示。这是我遇到了一些麻烦的地方。
最初的亮点并不麻烦,因为我在内部这样做。但是,我不知道如何仅使用其适配器位置访问上一个视图。我已经搜索 StackOverflow 大约一个小时了,因为我在 Android API 或谷歌中找不到太多内容。许多用户似乎都在问类似的问题,但最终,细微的差异会导致任何有用的答案无效。
在我的ViewHolder 内部,这是我的RecyclerView 的内部public class,我有一个OnClickListener,如下所示:
@Override
public void onClick(View view) {
if(!selected) {
selected = true;
view.setBackgroundResource(R.drawable.default_selection_background);
} else {
selected = false;
view.setBackgroundResource(0);
}
UpdateSelected(getAdapterPosition());
}
这又指向了我的RecyclerView,坦率地说,我还没有将任何工作代码添加到我的UpdateSelected(int position) 方法中。
如果有帮助,我打算让它像这样运行:
void UpdateSelected(int position) {
if(position != currentlySelected) {
ViewHolder[currentlySelected].Deselect();
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
...
public void Deselect() {
// and from here, I can go on as normal.
}
}
我注意到用户建议其他人使用getLayoutPosition() 来获取用于 UI 目的的位置,除非他们特别希望继续使用内部数据,这正是我打算做的。
如何从我的 RecyclerView 访问特定的 ViewHolder,使用它的位置?
【问题讨论】:
标签: java android android-recyclerview android-viewholder