
有谁知道如何跟踪所选项目?我一直在看一些名为SparseBooleanArray的东西,但我不确定如何实现它.
这是我的适配器代码:
public class tableRVAdapter extends RecyclerVIEw.Adapter<tableRVAdapter.tableHolder> { List<tables> tableList; private SparseBooleanArray selectedItems; public tableRVAdapter(List<tables> tableList) { this.tableList = tableList; selectedItems = new SparseBooleanArray(); // setHasStableIDs(true); } class tableHolder extends RecyclerVIEw.VIEwHolder { TextVIEw tableTV; CardVIEw tableCV; VIEw circle; VIEw parentVIEw; tableHolder(final VIEw itemVIEw) { super(itemVIEw); tableTV = (TextVIEw)itemVIEw.findVIEwByID(R.ID.tableTV); tableCV = (CardVIEw)itemVIEw.findVIEwByID(R.ID.tableCV); circle = itemVIEw.findVIEwByID(R.ID.statusCircle); itemVIEw.setClickable(true); parentVIEw = itemVIEw; tableCV.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { circle.setBackgroundResource(R.drawable.circle); } }); } /* @OverrIDe public voID onClick(VIEw vIEw) { if (selectedItems.get(getAdapterposition(),false)) { tableCV.setSelected(false); circle.setBackgroundResource(R.drawable.circle2); } else { selectedItems.put(getAdapterposition(),true); tableCV.setSelected(true); circle.setBackgroundResource(R.drawable.circle); } }*/ } @OverrIDe public tableHolder onCreateVIEwHolder(VIEwGroup parent,int vIEwType) { VIEw vIEw = LayoutInflater.from(parent.getContext()).inflate(R.layout.table_item,parent,false); tableHolder tableHolder = new tableHolder(vIEw); return tableHolder; } @OverrIDe public voID onAttachedToRecyclerVIEw(RecyclerVIEw recyclerVIEw) { super.onAttachedToRecyclerVIEw(recyclerVIEw); } @OverrIDe public voID onBindVIEwHolder(tableHolder holder,int position) { holder.tableTV.setText(tableList.get(position).gettableNumber()); } /** * Returns the total number of items in the data set hold by the adapter. * * @return The total number of items in this adapter. */ @OverrIDe public int getItemCount() { return tableList.size(); }}解决方法 RecyclerVIEw.adapter有两个重要的功能来覆盖: onCreateVIEwHolder(parent,vIEwType)onBindVIEwHolder(vIEwholder,position)
第一个函数用于扩充将在recyclelervIEw中使用的视图,第二个函数用于将您拥有的数据绑定到此视图,从而在视图上设置正确的视图状态.
recyclervIEw本身只会膨胀一定数量的视图,然后开始重新使用已经膨胀的视图(因此是recyclelervIEw).因此,您需要为onBindVIEwholder()中的每个项目设置正确的状态,并在该位置使用集合中的项目来设置正确的vIEwState.对于您的示例:根据对象中的布尔值更改图标的颜色,例如:ispressed
总结以上是内存溢出为你收集整理的如何在Android中的RecyclerView中跟踪所选项目?全部内容,希望文章能够帮你解决如何在Android中的RecyclerView中跟踪所选项目?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)