如何防止RecyclerView移动物品?

时间:2015-03-17 20:57:38

标签: android android-recyclerview gridlayoutmanager

我正在尝试实现一个布局,它基本上是一个相同大小的项目网格。

订购的商品,日历上有日期,所以你可以为什么每次滚动都不能随机排序。

我的问题是:有没有办法防止这种行为,或者我应该坚持使用旧的GridLayout?

我也是这样问的,因为我最初认为新的RecyclerView只是用于随机排序的项目,例如新闻文章或帖子。这可以解释控制其行为的困难。

然而,经过一些阅读和网络搜索,现在我觉得,如果我错了,请纠正我,RecyclerView是ListView,GridLayout的升级版本,还有其他几个由其LayoutManagers实现的。

有人可以帮我这个吗?

谢谢!

编辑:这是我的适配器:

public class CardAssenzeAdapter extends RecyclerView.Adapter<CardAssenzeAdapter.AssenzeViewHolder> {

private List<Assenza> list;
Context c;

public CardAssenzeAdapter(Context c, List<Assenza> list) {
    this.c = c;
    this.list=list;
}

@Override
public int getItemCount() {
    return list.size();
}

@Override
public void onBindViewHolder(AssenzeViewHolder NewsViewHolder, int i) {

    Assenza n = list.get(i);
    AssenzeViewHolder.month.setText(n.getMeseS());
    AssenzeViewHolder.day.setText(n.getGiornoS());
    if (n.isRitardo()) AssenzeViewHolder.hour.setText(n.getTipoR());
}

@Override
public AssenzeViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View itemView = LayoutInflater.
            from(viewGroup.getContext()).
            inflate(R.layout.card, viewGroup, false);

    return new AssenzeViewHolder(itemView);
}

public static class AssenzeViewHolder extends RecyclerView.ViewHolder {
    protected static TextView month;
    protected static TextView day;
    protected static TextView hour;

    public AssenzeViewHolder(View v) {
        super(v);
        month = (TextView) v.findViewById(R.id.meseA);
        day = (TextView) v.findViewById(R.id.giornoA);
        hour = (TextView) v.findViewById(R.id.oraR);
    }
}

}

1 个答案:

答案 0 :(得分:3)

RecyclerView与随机排序的元素无关。它的目的更像是更有效地使用资源。以下是Android Developer页面的引用,

  

&#34; RecyclerView小部件是一个更高级,更灵活的版本   列表显示。此小组件是用于显示大型数据集的容器   通过保持有限的数量可以非常有效地滚动   观点。有数据收集时使用RecyclerView小部件   其元素在运行时根据用户操作或网络而更改   事件&#34;

关于商品的订单,它与您提供给RecyclerView的数据集有关。因此,如果您的数据集没有按日期等排序,那么您需要做的是对数据集进行排序,然后将它们附加到RecyclerView。

HERE您可以查看它的实施情况。