2

基本的に同じサイズのアイテムのグリッドであるレイアウトを実装しようとしています。

項目は順序付けられており、カレンダーのように日付が表示されているため、スクロールするたびにランダムに並べ替えることができない理由がわかります。

私の質問は次のとおりです。この動作を防ぐ方法はありますか、それとも古い GridLayout をそのまま使用する必要がありますか?

これは、新しい RecyclerView は、ニュース記事や投稿など、ランダムに並べ替えられたアイテムにのみ使用することを意図していると当初考えていたためです。それは、その行動を制御することの難しさを説明したでしょう.

ただし、いくつかの読書とWeb検索の後、RecyclerViewはListView、GridLayout、およびそのLayoutManagerによって実装されている他のいくつかのアップグレードバージョンであることが間違っている場合は修正してください。

誰かがこれで私を助けることができますか?

ありがとう!

編集:これは私のアダプターです:

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);
    }
}

}
4

1 に答える 1

3

RecyclerView は、ランダムに並べられた要素とは関係ありません。その目的は、リソースをより効率的に使用することに似ています。Android開発者ページからの引用は次のとおりです。

" RecyclerView ウィジェットは、ListView のより高度で柔軟なバージョンです。このウィジェットは、限られた数のビューを維持することで非常に効率的にスクロールできる大きなデータ セットを表示するためのコンテナーです。要素が変更されるデータ コレクションがある場合は、RecyclerView ウィジェットを使用します。ユーザーアクションまたはネットワークイベントに基づいて実行時に。

アイテムの順序に関しては、RecyclerView に提供するデータ セットがすべてです。したがって、データセットが日付などでソートされていない場合は、データセットをソートして RecyclerView に添付する必要があります。

そして、ここでその実装を確認できます。

于 2015-03-17T21:33:16.843 に答える